T4MVC
بسم الله الرحمن الرحیم
معرفی T4MVC
T4MVC می تواند بر روی نسخه های Visual Studio 2010, 2012 و 2013نصب شود وASP.NET MVC 4.0 و 5.0این Package را پشتیبانی می کنند، شاید بتوانید بر روی سایر نسخه ها از این Package استفاده کنید اما این Package فقط بر روی گزینه های گفته شده تست شده است.
نصب T4MVC
برای نصب این Package کافی است که دستور زیر را از طریق Package Manager Console اجرا کنید
Install-Package T4MVC
پس از اجرای این دستور دو فایل به پروژه شما اضافه می شود.
هدف T4MVC
این Package برای جلوگیری از نوشتن اسامی کنترلر ها و اکشن ها و در نهایت view ها به صورت Hard Code مورد استفاده قرار می گیرد.
برای مثال کدزیر را در نظر بگیرید:
<% Html.RenderPartial("DinnerForm"); %>
ما از عبارت های رشته ای برای فراخوانی این Partial استفاده کرده ایم، اگر فردا شما بخواهید این نام را تغییر دهید باید در بهترین و سریعترین روش ممکن با استفاده از Finde ویژوال استادیو تمامی نام های مربوطه را تغییر دهید.
اما چرا از ابتدا از روش دیگری استفاده نکنیم!
T4MVC در واقع نام تمامی View,Conreoller,Action ها را به صورت خودکار در خود ذخیره می کند و عملا یک Enumeration برای شما به وجود می آورد تا در آینده در صورتی که نامی را برای یک View,Conreoller,Action عوض کردید، این نام در تمامی پروژه عوض شود.
مثال:
<% Html.RenderPartial("DinnerForm"); %>
از این به بعد ما نام ها را به صورت زیر خواهیم نوشت:
<% Html.RenderPartial(MVC.Dinners.Views.DinnerForm); %>
مثال:
return View("InvalidOwner");
کد ما با استفاده از T4MVC به صورت زیر خواهد بود:
return View(Views.InvalidOwner);
مثال:
return View("Index");
کد ما با استفاده از T4MVC به صورت زیر خواهد بود:
return View(Views.ViewNames.Index);
Adding additional route parameters
<%= Html.ActionLink("Delete Dinner", "Delete", "Dinners", new { id = Model.DinnerID }, null)%>
در کد بالا ما نام اکشن و کنترلر را به صورت رشته ای و همان روش Hard Code نوشته ایم، اما با استفاده از T4MVC می توانیم این کار را به صورت زیر انجام دهیم:
<%= Html.ActionLink("Delete Dinner", MVC.Dinners.Delete(Model.DinnerID))%>
Adding additional route parameters
ممکن است شما بخواهید اطلاعات بیشتری را برای اکشن خود ارسال کنید، برای این کار می توانید به صورت زیر اقدام کنید
Html.ActionLink("Delete Dinner", MVC.Dinners.Delete(Model.DinnerID)
.AddRouteValue("foo", 17))
اگر بخواهید چندین مقدار را ارسال کنید، می توانید به صورت زیر اقدام کنید:
Html.ActionLink("Delete Dinner", MVC.Dinners.Delete(Model.DinnerID)
.AddRouteValue("foo", 17)
.AddRouteValue("bar", "abc"))
می توانید از این روش نیز استفاده کنید
Html.ActionLink("Delete Dinner", MVC.Dinners.Delete(Model.DinnerID)
.AddRouteValues(new { foo = 17, bar = "abc"}))
فراخوانی تابع با دریافت مقدار به وسیله QueryString
RedirectToAction(MVC.Home.MyAction().AddRouteValues(Request.QueryString));
Url.Action
<%= Url.Action(MVC.Dinners.Delete(Model.DinnerID))%>
Url.JavaScriptReplacableUrl
<%= Url.Action(MVC.Dinners.Display(Model.DinnerID))%>
اگر بخواهید مقدار DinnerID را از طریق جاوا اسکریپت دریافت کنید می توانید به روش زیر عمل کنید
var myUrl=<%= Url.Action(MVC.Dinners.Display())%>
//myUrl will be /Dinners/Display
var myFinalUrl=myUrl+"/"+dinnerId; ///Dinners/Display/12
//or does it look like
var myFinalUrl=myUrl+"?dinnerID"+dinnerId; ///Dinners/Display?dinnerId=12
Ajax.ActionLink
<%= Ajax.ActionLink( "RSVP for this event",
"Register", "RSVP",
new { id=Model.DinnerID },
new AjaxOptions { UpdateTargetId="rsvpmsg", OnSuccess="AnimateRSVPMessage" }) %>
با استفاده از T4MVC می توان به صورت زیر نوشت
<%= Ajax.ActionLink( "RSVP for this event",
MVC.RSVP.Register(Model.DinnerID),
new AjaxOptions { UpdateTargetId="rsvpmsg", OnSuccess="AnimateRSVPMessage" }) %>
RedirectToAction (in controller code)
return RedirectToAction("Details", new { id = dinner.DinnerID });
با استفاده از T4MVC می توان به صورت زیر نوشت
return RedirectToAction(MVC.Dinners.Details(dinner.DinnerID));
routes.MapRoute (typically in global.asax)
routes.MapRoute(
"UpcomingDinners",
"Dinners/Page/{page}",
new { controller = "Dinners", action = "Index" }
);
با استفاده از T4MVC می توان به صورت زیر نوشت
routes.MapRoute(
"UpcomingDinners",
"Dinners/Page/{page}",
MVC.Dinners.Index(null)
);
Html.BeginForm
using (Html.BeginForm(MVC.Account.LogOn(), FormMethod.Post)) { ... }
Html.RenderAction and Html.Action (only in MVC 2 or newer)
<%= Html.Action("Menu", new { options = new MenuOptions { Width=400, Height=500} })%>
با استفاده از T4MVC می توان به صورت زیر نوشت
<%= Html.Action(MVC.Home.Menu(new MenuOptions { Width=400, Height=500})); %>
Area name constants
MVC.CoolArea.Name
Controller name constants
MVC.Home.Name
Action name constants
MVC.Home.ActionNames.Index
Parameter name constants
MVC.Home.MyActionParams.foo
Strongly typed links to script files and static resources (لینک به فایل ها و اسکریپت ها)
<img src="/Content/nerd.jpg" />
با استفاده از T4MVC می توان به صورت زیر نوشت
<img src="<%= Links.Content.nerd_jpg %>" />
ُScript
<script src="/Scripts/Map.js" type="text/javascript"></script>
با استفاده از T4MVC می توان به صورت زیر نوشت
<script src="<%= Links.Scripts.Map_js %>" type="text/javascript"></script>
نظرات (۲)
با عرض سلام
چرا T4MVC در این وضعیت به شما کمک نمی کند؟
T4MVC دقیقا مشابه یک enum عمل می کند، وقتی شما یک عضو این enum را تغییر می دهید (مثلا نام یک Action)، در تمامی مواردی که از این enum استفاده کرده اید این تغییر به روز خواهد شد.
اگر منظور شما درست متوجه نشده ام، لطفا بیشتر توضیح دهید.
با سلام
نه دقیقا T4MVC باید تغییر نام و اطلاعات را برای شما به صورت خودکار انجام دهد.
موفق باشید.