如果我正在使用Ajax.ActionLink帮助器,并且需要将几个参数传递给控制器操作,那么如何获取未绑定到模型的TextArea的值?ajax.actionlink调用控制器动作
例如,我想让用户填写一个textarea,然后单击Save,将textarea的值发送到控制器操作以进行进一步处理。
我使用ViewBag吗?如果是这样,我如何将DOM元素的值分配给ViewBag?
如果我正在使用Ajax.ActionLink帮助器,并且需要将几个参数传递给控制器操作,那么如何获取未绑定到模型的TextArea的值?ajax.actionlink调用控制器动作
例如,我想让用户填写一个textarea,然后单击Save,将textarea的值发送到控制器操作以进行进一步处理。
我使用ViewBag吗?如果是这样,我如何将DOM元素的值分配给ViewBag?
ViewBag是一个服务器端的概念。一旦页面被渲染,它就不存在了。 我无法知道将页面上的字段与操作参数进行声明性链接。
做你想做什么,你有两个选择: - 摆脱Ajax.ActionLink帮手,写一些JavaScript(对不起,Ican't真正帮助你在那里) - 用于代替Ajax.BeginForm放表单中的相关字段,以便点击提交按钮将通过ajax将表单提交回您的操作。
我以前玩过这个问题,你可以通过使用Ajax.BeginForm
解决它。
借此遵循例如:
我有一个模型Person
一个字符串属性名称。
查看
@model Application.Models.Person
<fieldset>
<legend>Form</legend>
@using (Ajax.BeginForm("SendUp", "Home", new AjaxOptions
{
HttpMethod = "POST",
OnComplete = "window.location.href = 'Index'"
}))
{
<p>
@Html.LabelFor(model => model.Name)
@Html.EditorFor(model => model.Name)
</p>
<p>
@Html.TextArea("ta")
</p>
<p>
<input type="submit" value="Submit" />
</p>
}
</fieldset>
控制器
[HttpPost]
public ActionResult SendUp(string Name, string ta)
{
string s = ta;
// Process stuff here
// Go to another action or whatever
return RedirectToAction("Index");
}
使用Ajax.BeginForm()
允许你发送数据到控制器即使它不绑定到一个模型在页面上。您需要确保Html元素的name
属性与控制器所需的参数名称相同。
所以,如果你有
public ActionResult SendUp(string Name, string ta)
控制器方法你需要有一个HTML元素的名称Name
和ta
的Ajax.BeginForm()
内。
要做到这一点,你可以写出整个元素:
<input type="text" id="Name" name="Name" />
或者你可以使用@Html
帮手。
@Html.Editor("Name")
当你提供的@Html助手将这个值设置为id
财产,到name
属性以及名称。
@Dennis Troller - 谢谢你的帮助。我会用js代替。谢谢 – Ryan