1

我正在使用屬性路由獲取頁面的動作。但是當我發佈它時,ajax表單忽略了我在參數中定義的動作和控制器,並嘗試使用get方法發佈到相同的url。Ajax.BeginForm忽略MVC中參數中定義的動作和控制器5

這是我取得動作:

[AllowAnonymous] 
[HttpGet] 
[Route("path")] 
public ActionResult Action() 
{ 
    return View(); 
} 

這是我的帖子行動:

[AllowAnonymous] 
[HttpPost] 
public JsonResult Action(Model model) 
{ 
    return Json(true); 
} 

這是我的看法:

@using (Ajax.BeginForm("Action", "Controller", new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "someDiv" })) 
{ 

    @SomeInput 

    <input type="submit" value="send" /> 

} 

這生成的HTML:

<form action="/path" data-ajax="true" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-update="#someDiv" id="form0" method="post">   
    <input value="submit" type="submit"> 
</form> 

單擊按鈕時。發佈到域/路徑的帖子正在發射。爲什麼我定義的操作被忽略?

+0

您可以發佈由您Ajax.BeginForm生成的HTML?我懷疑它一直沒有找到你的路線,所以它已經把它留作空白,它會擊中你的網站的根。 – Slicksim

+0

@Slicksim我已經更新了這個問題。 – gkon

+0

您是否也在控制器上定義了路由?或只是在這一個行動? – Slicksim

回答

0
routes.MapRoute(
       name: "Any Name", 
       url: "Any URL", 
       defaults: new { Controller = "Your Ajax Controller Name ", action = "Your Ajax action Name" } 
      ); 

或者試試這個

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

一下添加到最後所有路線的RouteConfig.cs

+0

默認路由已在路由配置中定義。 – gkon

+0

如果你在你的頁面上使用了這些腳本,請給我們提供錯誤 Avin

+0

我正在使用jQuery和Unobtrusive Ajax,但沒有任何錯誤或某事。它只是產生一個不同於所需的網址。 – gkon

相關問題