2011-04-07 158 views
3

我有问题。如何将价值从视图传递到控制器

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

在我看来的代码是:

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

我怎样才能得到的name值到我的控制器,好吗?

感谢

回答

6

还有另一种方法。

[HttpPost] 
public ActionResult Index() { 

    string name = Request["name"]; 
} 
+0

我可以从@ html.textbox得到这个(“Name”); ?真的吗? – Steffi 2011-04-07 19:28:08

+0

@Steffi应该工作。试一试。 – tugberk 2011-04-07 19:31:32

+0

@steffi在这里,你会看到我的一个样本:http://forums.asp.net/t/1669915.aspx/1?Simple+search+page – tugberk 2011-04-07 19:32:06

1

<%=型号%>

在MVC 3,您在默认情况下在您的视图中看到的<动态>设定为模型。只需将字符串作为对象传递给视图(从您的控制器返回视图((对象)“名称”);)。

Also see this for a more complex example.

[编辑]

我得开始读更好:)

好了,我们开始吧。

最简单的方法是通过<表格>。任何输入元素都会发布到您的控制器,其中“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) 
{ 
} 
+0

看起来不错。为什么使用HTML而不是或<% %>? – Steffi 2011-04-07 17:57:43

+1

您通常不使用MVC中的服务器标签。 – 2011-04-07 17:58:38

+0

@Jack AH好的...!谢谢 – Steffi 2011-04-07 18:11:15

6

包裹它的形式和具有某种形式的提交按钮来调用动作方法。

<% 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"]; 
} 
+0

是不是这个错误?您上面一起使用了Web表单视图引擎和剃须刀。 – tugberk 2011-04-07 19:40:21

+1

也,这** @ html。textbox(“Name”); **语法错误。它应该是** @ Html.TextBox(“Name”)** – tugberk 2011-04-07 19:44:45

+0

废话你是对的大声笑 – 2011-04-07 19:53:28

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正如人们所说的也是一个非常有效的选择,但是这是更容易,有点干净呃,在我看来。

相关问题