0

我是 mvc 的新手。我设计了一个表单,当我单击提交按钮时,正确的操作方法正在调用,但表单字段的值没有通过。

这是我的查看代码

<div id="mydiv">
@using (Html.BeginForm("Save", "Game", FormMethod.Post, new { @Id = "Form1" }))
{
    <table border="0">
    <tr>
        <td>Name :</td>
        <td><input name="name" type="text" /></td>
    </tr>

     <tr>
        <td>Salary :</td>
        <td><input name="salary" type="text" /></td>
    </tr>
    <tr>
        <td colspan="2"><input type="submit" value="Save" /> </td>
    </tr>
    </table>
}
</div>

这是我的行动方法

 public ActionResult Save(string str1, string str2)
 {
     return View("Message");
 }

当 save 被调用时,str1请帮助我传递值,并讨论将值从视图传递到操作方法的各种技巧。谢谢str2null

4

3 回答 3

4

改变你的控制器

public ActionResult Save(string name, string salary)
{
    return View("Message");
}

因为您必须使用name您在其中定义的变量input

<input name="name" type="text" />
<input name="salary" type="text" />

如果要返回部分视图。

 return PartialView("Message", <<OptionalPartialViewModel>>);
于 2013-09-09T14:23:54.640 回答
3

您应该从了解 ASP.NET MVC 中的约定开始。您应该使用模型在控制器和视图之间进行通信。

首先创建一个模型类型:

public class SalaryModel
{
    public string Name { get; set; }
    public string Salary { get; set; }
}

通过使用 HTML 帮助器和强输入视图来创建表单:

@model SalaryModel

<div id="mydiv">
@using (Html.BeginForm("Save", "Game", FormMethod.Post, new { @Id = "Form1" }))
{
    <table border="0">
    <tr>
        <td>Name :</td>
        <td>@Html.TextBoxFor(item => item.Name)</td>
    </tr>

     <tr>
        <td>Salary :</td>
        <td><input name="salary" type="text" /></td>
    </tr>
    <tr>
        <td colspan="2">@Html.TextBoxFor(item => item.Salary)</td>
    </tr>
    </table>
}
</div>

然后您可以在模型中获取表单值:

[HttpPost]
public ActionResult Save(SalaryModel model)
{
    return View("Message");
}

ASP.NET MVC 网站上有一个很棒的教程,可以帮助您了解基础知识。

于 2013-09-09T14:29:01.273 回答
1

MVC 将表单输入绑定到Action它们的名称。您应该将您的方法参数更改为与表单相同的参数。另外,您缺少以下HttpPost属性:

[HttpPost]
public ActionResult Save(string name, string salary)
{
    /*Do Stuff here*/

    return View("Message");
}
于 2013-09-09T14:31:29.790 回答