如果我正在使用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