如何从asp.net的html页面调用控制器方法?

时间:2012-01-02 16:35:49

标签: asp.net-mvc-3

在我正在处理的应用程序中,我在views文件夹中有一个Html页面,我已经提到了如下操作。

  <form name="form" onsubmit="return validateForm();" method="post" action="//Controllers/RegistrationController.cs">

注册控制器返回一个视图。

public ActionResult Detail(string name)
        {

            return View();
        }

当我运行程序时,我发现服务器未找到错误。

我还尝试将操作字符串更改为action="//Controllers/RegistrationController.cs/Detail" 但得到了同样的错误。

是否必须以其他方式编写操作字符串?

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

假设您使用的是默认路由({controller}/{action}/{id}):

action="/Registration/Detail"

实际上我建议您使用HTML帮助程序生成表单,而不要像以前那样对它们进行硬编码:

@using (Html.BeginForm("Details", "Registration", FormMethod.Post, new { name = "form", onsubmit = "return validateForm();" }))
{
    ...
}

答案 1 :(得分:1)

描述

您不必像解决方案那样设置路径。您不需要设置Controllers,因为框架知道您的意思是控制器。

假设您没有更改global.asax中的路由,您的RegistrationController.cs有一个名为Detail的ActionMethod(装饰有[HttpPost])以及项目中的以下文件夹结构。

  • 控制器/ RegistrationController.cs
  • 观看/注册/ Detail.cshtml

    @using (Html.BeginForm("Detail", "Registration", FormMethod.Post, new { @onSubmit =     "return validateForm();" }))
    {
        // Your Form's content
    }
    

答案 2 :(得分:1)

/registration/detail - 您不需要引用实际文件的路径。框架找到控制器类并为您调用请求的操作。它使用global.asax.cs中定义的路由来确定来自URL的控制器和操作。默认路由为{controller}/{action}/{id},其中前两个默认路由为&#34; Home&#34;和&#34;索引&#34;分别和第三个是可选的。如果需要,可以通过添加/修改路由设置来更改此项。