簡體   English   中英

Html.Routelink,Html.BeginRouteForm,Ajax.RouteLink和Ajax.BeginRouteForm不起作用

[英]Html.Routelink, Html.BeginRouteForm, Ajax.RouteLink and Ajax.BeginRouteForm not working

RouteLinkBeginRouteForm給出空的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM