Привет, мой вопрос: у меня есть два divs, один div содержит @ ajax.beginform, а другой div пуст, но скрыт. Идея, которую я имею, состоит в том, что div с формой в, чтобы сделать запрос ajax, метод действия контроллера определяет, действительна ли модель, , если недействительно, повторно отправьте одно и то же содержимое формы (один частичный вид с содержимое формы), но с ошибками проверки; , если модель действительна, она возвращает другое содержимое частичного просмотра с помощью простого «спасибо» и отображается в div, и она должна скрывать div, который имеет форму. Я не знаю, как я могу это сделать ??? Моя идея состоит в том, что событие onSuccess для @ ajax.beginform имеет параметр, html, возвращаемый сервером, но не знает, какой контент возвращает сервер, т. Е. Я не знаю, что такое div. Помоги мне, пожалуйста.Обновление DIV с контентом по запросу AJAX
PD: если вопрос непонятен, дайте мне знать, и я приведу пример.
[[[[[[UPDATE]]]]]]
У меня есть модель:
public class Message{
public int MessageID { get; set; }
[Required]
public string From { get; set; }
[Required]
public string Content { get; set; }
}
У меня есть контроллер:
public class MessageController : Controller{
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult saveMessage(Message msg) {
// (ModelState.IsValid)
if (!msg.From.Contains("@")) {
ModelState.AddModelError("From", "The mail must contain an @");
return PartialView("DataMsg", msg);
}
return RedirectToAction("thanks");
}
public PartialViewResult thanks() {
return PartialView();
}
}
и мои просмотры:
Index.cshtml:
@model MvcApplication1.Models.Message
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@section scripts{
<script>
function successMsg(data) {
// I want the "thank you" is displayed in the div with id="thanksUpdate" and not in #formUpdate
$("#formUpdate").html(data);
}
</script>
}
@using (Ajax.BeginForm("saveMessage",
new AjaxOptions { HttpMethod="Post", OnSuccess="successMsg"})) {
<div id="formUpdate">
@Html.Partial("DataMsg", Model);
</div>
}
<div id="thanksUpdate" style="display:none;">
</div>
DataMsg.cshtml:
@model MvcApplication1.Models.Message
@Html.LabelFor(m => m.From)
@Html.EditorFor(m => m.From)
@Html.ValidationMessageFor(m => m.From)
@Html.LabelFor(m => m.Content)
@Html.EditorFor(m => m.Content)
@Html.ValidationMessageFor(m => m.Content)
<input type="submit" value="Send" />
и thanks.cshtml:
Я хочу, чтобы «спасибо» отображается в div с id = «thanksUpdate», а не в #formUpdate. Как я могу это сделать ???
Отправка данных на сервер и сервер обработки данных, которые он получает 2 совершенно разные предметы. Если у вас есть код, вы должны его опубликовать. –
Привет, Джон, я добавлю необходимый код – Marlonchosky