ورود

View Full Version : سوال: مشکل در استفاده از Route Attribute



mbasirati
شنبه 22 اسفند 1394, 05:55 صبح
سلام
من برای صفحه رجیستر از اتریبیوت روت به شکل زیر استفاده کردم:


[AllowAnonymous]
[Route("Register")]
public ActionResult Register()
{
return View();
}


===============================


[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
...
}


===================================


@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { role = "form" }))
{


اما وقتی فرم ثبت نام سابمیت میشه، اکشن پست اجرا نمیشه. وقتی از route استفاده نمیکنم درسته و اجرا میشه.
نکته ای وجود داره که باید رعایت بشه؟

arashnaderi
شنبه 22 اسفند 1394, 06:50 صبح
سلام
بله مشکلش اینه که برای متد post نیومدی اینو اضافه کنی
[Route("Register")]

یعنی اینطوری میشه در نهایت



[HttpPost]
[Route("Register")]

[AllowAnonymous]

[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
...
}

arashnaderi
شنبه 22 اسفند 1394, 06:52 صبح
حالا چرا اسم متدت register هستش اسم روت هم register؟ روت اضافس اینجا

hakim22
شنبه 22 اسفند 1394, 06:57 صبح
در فایل RouteConfig مطمئن شوید که دستور routes.MapMvcAttributeRoutes در ابتدای متد RegisterRoutes فراخوانی شده باشد.

در واقع باید قبل از فراخوانید سایر روتها آن را قرار دهید.

arashnaderi
شنبه 22 اسفند 1394, 06:59 صبح
در فایل RouteConfig مطمئن شوید که دستور routes.MapMvcAttributeRoutes در ابتدای متد RegisterRoutes فراخوانی شده باشد.

در واقع باید قبل از فراخوانید سایر روتها آن را قرار دهید.

اره منظورشون اینه که اینو هم کنترل کن



public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*js}", new { js = @".*\.js(/.*)?" });
routes.IgnoreRoute("{*css}", new { css = @".*\.css(/.*)?" });
routes.MapMvcAttributeRoutes();
routes.LowercaseUrls = true;
....

mbasirati
شنبه 22 اسفند 1394, 09:17 صبح
حالا چرا اسم متدت register هستش اسم روت هم register؟ روت اضافس اینجا

این متد داخل کنترلر Account هست که با آدرس /Account/Register قابل دسترسیه که من میخواستم مستقیم با آدرس Register در دسترس باشه.

مشکل هم همین بود که برای اکشن پست، روت رو تعریف نکرده بودم. این کارو انجام دادم و هلپر beginForm رو هم بدون پارامتر قرار دادم مشکل حل شد.