如何将值从视图传递给控制器

时间:2011-04-07 17:25:59

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

我有一个问题。

我需要将C# and MVC3中的值传递给控制器​​,但我不知道如何。

我认为的代码是:

@html.textbox("Name"); 
<input value="Envoyer" type="submit">

我怎样才能将name的值提供给我的控制器?

由于

4 个答案:

答案 0 :(得分:6)

将其包装在一个表单中并有一个某种提交按钮来调用你的Action方法。

<% using (Html.BeginForm("MethodName", "Home", FormMethod.Post)) {%>
     <% Html.Textbox("Name") %> 
     <input value="Envoyer" type="submit" />
<% } %>



[HttpPost]
public ActionResult MethodName(FormCollection col)
{
    string name = col["Name"];
}

答案 1 :(得分:6)

还有另一种方式。

[HttpPost]
public ActionResult Index() {

    string name = Request["name"];
}

答案 2 :(得分:3)

将其包装成表格,如已提供的那样:

@using(Html.BeginForm()) {
    @Html.Textbox("Name")

    <input value="Envoyer" type="submit">
}

然后在您的控制器操作中,只需声明一个名为Name的参数(假设这发生在名为Index的视图中):

[HttpPost]
public ActionResult Index(string Name)
{
    // do whatever with Name
}

正如所说的那样使用FormCollection也是一个非常有效的选择,但在我看来,这更简单,更清洁。

答案 3 :(得分:1)

<击> &lt;%= Model%&gt;

在MVC 3中,您会看到&lt; dynamic&gt;在视图中默认设置为模型。只需将一个字符串作为对象传递给视图(从控制器返回View((object)“Name”);)。

Also see this for a more complex example.

<击>

[编辑]

我必须开始更好地阅读:)

好的,我们走了。

最简单的方法是通过&lt; form&gt;。任何输入元素都会发布到您的控制器,其中“name”属性将是变量名称(参数)。

示例:

<form action="/Contact/SendMessage" method="post">
    <table>
        <tr>
            <th>Your e-mail adres:</th>
            <td class="inputCell">
                <input id="txtEmail" name="Email" type="text" value="<%= Model %>" />
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <textarea name="Message" rows="10" style="width: 450px;"></textarea>
            </td>
        </tr>
        <tr>
            <th colspan="2" style="text-align: right;"><input type="submit" id="SendButton" value="Send Message" /></th>
        </tr>
    </table>
</form>

在控制器上,您可以使用以下功能:

[AcceptVerbs(HttpVerbs.Post)]
public RedirectResult SendMessage(String Email, String Message)
{
}