[英]Html.Routelink, Html.BeginRouteForm, Ajax.RouteLink and Ajax.BeginRouteForm not working
RouteLink
和BeginRouteForm
給出空的href。 如果我嘗試刪除代碼中定義的任何自定義路由,則會出現編譯錯誤。 我嘗試尋找類似問題的答案,但都無濟於事。
我的路線包含以下可選參數:
routes.MapRoute("CustomRoute", "Double/Steps/Add/{id}", defaults: new { controller = "DoubleDodge", action = "Step" });
這就是我所說的路線:
<div>
@Ajax.RouteLink("Dodge Me", "CustomRoute", new { id = ViewBag.Id }, new AjaxOptions { AllowCache = false, UpdateTargetId = "main-content-div", InsertionMode = InsertionMode.Replace })
</div>
期待您的回復。 謝謝 :)
如果MVC無法按照指定的路線解析,則使用Routelink
會得到一個空的href。
我敢打賭,您的CustomRoute在默認路由配置之下。 確保任何專用路由都在頂部,因此MVC首先匹配那些路由,因為它會返回第一個匹配項。 而且MVC可能正在尋找“ Double”控制器,“ Steps”操作和“ Add” id值。
如果不是這種情況,那么如果您的ViewBag.Id
不包含值,則可能會發生相同的問題,尤其是因為您的“ id”在路線中不是可選的。 您可以通過添加UrlParameter.Optional
使其成為可選, UrlParameter.Optional
所示:
routes.MapRoute(
name: "CustomRoute",
url: "Double/Steps/Add/{id}",
defaults: new { controller = "DoubleDodge", action = "Step", id = UrlParameter.Optional }
);
我假設您的Controller / Action看起來像這樣:
public class DoubleDodge : Controller
{
public JsonResult Step(string id)
{
// create result
MyViewModel vm = new MyViewModel();
return Json(vm);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.