2

我正在做一个学校项目,我需要一些帮助。我创建了一个表单,我想从中获取提交的值。是否可以在不使用 JavaScript 的情况下做到这一点?在这种情况下,我该怎么做?

形式:

<div id="secondRowInputBox">
        <% using (Html.BeginForm("Index","Home",FormMethod.Post))
        {%>
            <%= Html.TextBox("Id")%> <br />
            <%= Html.TextBox("CustomerCode") %><br />
            <%= Html.TextBox("Amount") %><br />
            <input type="submit" value="Submit customer data" />
        <%} %>
    </div>
4

3 回答 3

2

只需在您的控制器中创建一个HttpPost接受表单值作为参数的操作:

[HttpPost]
public ActionResult Index(int id, string customerCode, int amount)
{
    // You can change the type of the parameters according to the input in the form.
    // Process data.    
}

您可能想查看模型绑定。这使您可以创建强类型视图,并省去使用数十个参数创建操作的麻烦。

于 2013-10-08T08:58:39.507 回答
1

你已经完成了一半的工作,现在在 home 控制器中做一个 actionresult

[HttpPost]
public ActionResult Index(int id, string customerCode, int amount)
{
// work here.
}

form post 方法将调用此方法,因为您已在 begin 表单参数中指定它。

如果您使用模型来传递值并将其用于表单元素的视图中会更好

[HttpPost]
public ActionResult Index(ModelName modelinstance)
{
// work here.
}

示例登录模型

public class LoginModel
{
    [Required]
    [Display(Name = "Username:")]
    public String UserName { get; set; }

    [Required]
    [Display(Name = "Password:")]
    [DataType(DataType.Password)]
    public String Password { get; set; }
}

现在如果在表单中使用这个登录模型

那么对于控制器动作,modelinstance 只是模型类的对象

[HttpPost]
public ActionResult Index(LoginModel loginDetails)
{
// work here.
}

如果表单中有很多变量,那么有一个模型会有所帮助,因为您不需要为所有属性编写。

于 2013-10-08T09:01:33.453 回答
0

Henk Mollema 的回答很好。在这里多说几句吧。

Html.TextBox将生成如下所示的 html,有一个 name 属性。

<input id="CustomerCode" name="CustomerCode" type="text">

当你提交表单时,所有输入字段的值都可以通过 name 属性作为 key 从 Request.Form 中获取Request.Form["CustomerCode"],ASP.NET MVC 为我们做了一些神奇的事情,所以它可以简单地进入 action 方法的参数中。

于 2013-10-08T09:10:25.357 回答