添加<form action =“”>问题</form>

时间:2014-01-23 03:37:18

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

net我对

的正确语法和要求有疑问
<form action=""> 

我正在使用visual studio express for web 2013并遵循asp.net MVC框架

此分配的部分要求是:“方法签名必须具有制造商类型的参数。这是最佳实践。”

我正在查看示例网站的html表单,这是表单标记:

<form action="/Manufacturers/addmanufacturer" method="post">

表格在制造商文件夹的索引视图中,我还没有添加'addmanufacturer',因为我不确定它需要什么。那是控制器吗?它只是一个代码文件吗?我要为'addmanufacturer'实施什么项目?我注意到'addmanufacturer'没有任何“。”跟随它的是什么

另一个需要的部分是“方法返回值必须重定向到Index()方法。”是否可以进一步阐述这一部分?

2 个答案:

答案 0 :(得分:1)

通常,在ASP.NET MVC中,您只需使用Html.BeginForm()辅助方法:

@using (Html.BeginForm()) {
  // Form goodies go here
}

您可以从链接中看到,您可以选择指定操作,控制器,路由值和html属性。

编辑:要处理表单,您需要在控制器中创建一个操作(除非您另行指定,否则将在操作和同一控制器中创建相同的名称)。如果使用POST方法,可以使用[HttpPost]属性修饰action方法以帮助路由。

类似的东西:

[HttpPost]
public ActionResult Index(FormCollection formCollection)
{
}

您也可以创建一个自动填充的强类型,称为视图模型。

答案 1 :(得分:1)

AddManufacturer控制器上Action(通常)为Manufacturers。只是如何在Index控制器上定义Manufactures操作。

现在我不确定引用的是什么:

  

方法返回值必须重定向到Index()方法。

实际上指的是,但我想象的是(因为我没有样本或书)。我假设一旦您填写表单并单击提交,它就是Posted到制造商控制器上的AddManufacturer操作。

现在一个动作通常应该导致ActionResult(不一定但通常会这样做)所以我理解的是,当AddManufacturer动作的处理逻辑完成时,它应该重定向回到制造商控制器上的Index行动。这通常(同样不总是)称为RedirectToRouteResult,在此示例中将调用,例如:

return RedirectToAction("Index");

该代码将指示浏览器重定向回Index控制器上的Manufacturers操作。

对于您的表单,(基于您的示例),另一个响应中列出的html帮助程序将发布到Index控制器上的Manufacturers操作。但是,您希望发布到需要使用的AddManufacturers操作。

@using (Html.BeginForm("AddManufacturers", "Manufacturers"))
{

}

我希望这有助于澄清一些事情。