值不会从视图传递到操作方法

时间:2013-09-09 14:20:18

标签: asp.net-mvc-3

我是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");
 }

当保存被称为str1&amp; str2正在null请帮助我传递价值,并讨论从视图到操作方法传递价值的各种技巧。感谢

3 个答案:

答案 0 :(得分: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>>);

答案 1 :(得分: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网站上有一个很棒的tutorial可以帮助您掌握基础知识。

答案 2 :(得分:1)

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

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

    return View("Message");
}