我有一个控制器从 ActionLink 调用中被调用两次。
我的主页有一个链接,单击该链接会调用 Play 控制器上的 Index 方法。 id 100 被传递到该方法中。我认为这就是导致问题的原因。下面详细介绍这一点。
以下是一些代码片段:
主页:
<%= Html.ActionLink("Click Me", "Index", "Play", new { id = 100 }, null) %>
播放控制器:
public ActionResult Index(int? id)
{
var settings = new Dictionary<string, string>();
settings.Add("Id", id.ToString());
ViewData["InitParams"] = settings.ToInitParams();
return View();
}
播放视图:
<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
(html <head> omitted for brevity)
<body>
<form id="form1" runat="server" style="height:100%">
Hello
</form>
</body>
如果我去掉 Index 方法的参数,一切都很好。如果我将参数保留在原处,则将使用 100 作为 id 调用 Index 方法。返回View后,再次调用该方法,参数为null。
我似乎无法弄清楚是什么触发了第二个电话。
我的第一个想法是添加一条特定的路线,如下所示:
routes.MapRoute(
"Play", // Route name
"Play/{id}", // URL with parameters
new {controller = "Play", action = "Index"} // Parameter defaults
);
除了创建一个看起来更漂亮的链接之外,这没有任何效果。
我不知道从这里该去哪里。