Я уже сталкивался с этой проблемой, и вы можете обойти ее, используя 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()
позволяет передавать данные на расстояние до контроллера , даже если он не связан с моделью на странице. Вы должны убедиться, что свойство name
вашего элемента Html имеет то же имя, что и параметр, который требуется контроллеру.
Так что если у вас есть метод контроллера в
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