在我正在处理的应用程序中,我在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"
但得到了同样的错误。
是否必须以其他方式编写操作字符串?
非常感谢您的帮助。
答案 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]
)以及项目中的以下文件夹结构。
观看/注册/ 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;分别和第三个是可选的。如果需要,可以通过添加/修改路由设置来更改此项。