2010-10-29 12 views
3

Я новичок в ASP.NET MVC, поэтому вопрос может показаться «глупым», извините.Partial ASP.NET MVC View submit

У меня есть частичный вид внутри моего домашнего вида.

Частичный вид представляет форму, вызывающую метод действия внутри HomeController.

Он отлично работает с проверкой сервера, проблема в том, что после публикации отображается только Partial View.

Как отредактировать весь вид дома после публикации?

О коде:

Внутри PartialView У меня есть форма:

<% using (Html.BeginForm("Request", "Home")) { %> 

Запрос является ActionResult определена внутри моей HomeController.

[HttpPost] 
public ActionResult Request(RequestModel model) 
{ 
    if (ModelState.IsValid) 
    { 
    // Saving data ..... 
    } 
    else 
    { 
    // Show Server Validation Errors 
    return View(); 
    } 
} 

В это время, после того, как пост, то ASCX показывает erros проверки сервера, но только оказывает код ASCX PartialView. адреса URL выглядит следующим образом после того, как пост:

http://xxxxxxxxxxx/Home/Request 

То, что я хочу, показывает весь вид дома с ASCX внутри показывая проверки ошибок сервера.

+1

использовать asp.net-MVC ярлык как «MVC» общая метка. – Stefanvds

+0

ваш тег прекрасен. вам просто нужно отредактировать свой вопрос и добавить некоторые детали и немного исходного кода –

ответ

2

Изменить тип возврата также:

[HttpPost] 
public PartialViewResult Request(RequestModel model) 
{ 
    if (ModelState.IsValid) 
    { 
    // Saving data ..... 
    } 
    else 
    { 
    // Show Server Validation Errors 
    return PartialView(); 
    } 
} 
5

Попробуйте сделать частичное представить с помощью JQuery:

<script type="text/javascript"> 
$(document).ready(function() { 
    $("input[type=submit]").live("click", function() { 
     var f = $("input[type=submit]").parents("form"); 
     var action = f.attr("action"); 
     var serializedForm = f.serialize(); 
     $.ajax({ 
      type: 'POST', 
      url: action, 
      data: serializedForm, 
      success: function (data, textStatus, request) { 
       if (!data == "") { 
        // redisplay partial view 
        $("#formDiv").html(data); 
       } 
       else { 
        // do whatever on sucess 
       } 
      } 
     }); 
     return false; 
    }); 
}); 
</script> 

Предполагая, что ваш вид/ASCX/HTML-то вроде этого:

<div id="formDiv"> 
    <% Html.RenderAction("Request"); %> 
</div> 
2

Я столкнулся с той же проблемой в коде, поэтому я просто сделал небольшую модификацию в своем коде, и это сработало. Вместо возвращения той же точки зрения, я использовал

return Redirect(Request.Referrer) 

Ранее:

return View();