我有一个问题。
我需要将C# and MVC3
中的值传递给控制器,但我不知道如何。
我认为的代码是:
@html.textbox("Name");
<input value="Envoyer" type="submit">
我怎样才能将name
的值提供给我的控制器?
由于
答案 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)
{
}