帮助将ActionLinks映射到控制器中的方法(ASP.NET MVC2)

时间:2010-09-24 18:05:51

标签: c# .net asp.net-mvc asp.net-mvc-2 asp.net-mvc-routing

我正在进行我的第一个MVC项目,但仍然没有完全掌握它。我遇到了这个问题:

我在我的视图中有这个(Home / Index.aspx)

<% using (Html.BeginForm()) { %>
<fieldset>
<p>
    <%: Html.TextBox("A")%> 
    <%: Html.TextBox("B") %>
    <%: Html.ActionLink("Submit", "Create", "Home")%> 
</p>
</fieldset>
<% } %>

我在我的Controller(Controllers / HomeController.cs)

中有这个
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection formValues)
{
    return View("Index");
}

我没有更改global.asx中的默认路由

当我点击提交时,我收到“资源无法找到错误”。但是,如果我将ActionLink更改为

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

和控制器中的方法:

[AcceptVerbs(HttpVerbs.Post)]
 public ActionResult Index(FormCollection formValues)
 {
     return View("Index");
 }

它工作正常。

我有点困惑,因为如果我在ActionLink中指定了确切的操作方法名称和控制器(&lt;%:Html.ActionLink(“提交”,“创建”,“主页”)%&gt; ),为什么我将此方法命名为Create或Index?

1 个答案:

答案 0 :(得分:2)

您有[AcceptVerbs(HttpVerbs.Post)]将其限制为HTTP POST请求。由于动作链接是GET,因此它不使用您的方法。大概你有两个索引方法,其中一个没有该属性并接受GET请求。