我觉得有点愚蠢,但我只想知道如何在控制器上调用服务器站点动作。在MVC中使用HTML按钮
例如让我说我有一个文本区域和一个提交按钮。这个想法是点击提交按钮,文本区域中的文本将被提交到数据库。非常简单的东西。
谢谢你的帮助!
我觉得有点愚蠢,但我只想知道如何在控制器上调用服务器站点动作。在MVC中使用HTML按钮
例如让我说我有一个文本区域和一个提交按钮。这个想法是点击提交按钮,文本区域中的文本将被提交到数据库。非常简单的东西。
谢谢你的帮助!
在视图的HTML中,文本区域和提交按钮将是表单的一部分,并且该表单的action
属性将指向''
,并且您将一部分放入生成该视图的同一控制器中,以检查POST数据。如果有POST数据,您可以将其写入数据库。
的形式会是这个样子:
<form action='' method='post'>
<textarea name="text"></textarea>
<input type="submit" value="Submit"/>
</form>
在后,你会看到一个变量与textarea的name
属性(在这种情况下,text
)相匹配的密钥。你可以从那里阅读。
如果您愿意,也可以将表单上的action
属性更改为URL,在这种情况下,您会将该数据写入该URL所指向的控制器中,以检查POST数据。
:
<%Html.BeginForm("Hello","Home",FormMethod.Post);%> <!--Name of method, name of controller, formmethod -->
<input type="text" id="userName" maxlength="50" name="userName"/>
<input id="Submit1" type="submit" value="Say Hello!" />
<%Html.EndForm();%>
<h2><%= Html.Encode(TempData["Message"]) %></h2>
在控制器(在该示例中的HomeController):
public ViewResult Hello(string userName) //note this variable is exactly what is the name of text input on page
{
//simple example, take input and pass back out
TempData["Message"] = "Hello, " + userName;
return View("Index",TempData);
}
编辑:为了解决另一个问题有关维护URL
一个方法来完成“留在原地”,只要你的URL是“超载”索引控制器的方法,如下面
[AcceptVerbs(HttpVerbs.Post)] //This is KEY <-----
public ActionResult Index(string userName)
{
//simple example, take input and pass back out
TempData["Message"] = "Hello, " + userName;
return View("Index",TempData);
}
然后在你的Index.aspx改变Html.Begin表像下面,你只是指向默认动作现在
<%Html.BeginForm("Index","Home",FormMethod.Post);%>
既然你正在发布到控制器并没有得到(默认的索引行动)设置为AcceptVerb POST的版本,并采取用户名字符串将运行和您的网址应该保持
感谢您的评论。但是,我将如何定义获取textarea数据的服务器端函数? – hanesjw 2010-07-19 20:28:21