2012-01-24 6 views
1

У меня есть эта проблема:ValidationSummary не появляясь с частичным видом

Я иду на страницу, такие как:

/Auction/Details/37 

и это вызывает этот метод действий:

public ActionResult Details(int id) 

Особая линия в этом методе:

return View("DetailsLub", auction); 

Эта точка зрения содержит следующую строку:

@Html.Action("BidOnAuction", new { auctionId = Model.Id }) 

Что вызывает этот метод действия:

public PartialViewResult BidOnAuction(int auctionId) 

До сих пор так хорошо?

Теперь у меня есть форма в представлении BidOnAuction, у которого есть кнопка. При нажатии на эту кнопку, этот метод действия invloked:

[HttpPost] 
public ActionResult BidOnAuction(BidOnAuctionViewModel model) 

Этот метод действия имеет поймать заявление со следующими линиями:

ModelState.AddModelError(string.Empty, operation + @" Failure: " + message); 
return RedirectToAction("Details", new { id = model.AuctionId }); 

Теперь, как вид DetailsLUB и вид BidOnAction содержат эта линия:

@ Html.ValidationSummary (правда)

Но, проблема в том, что никогда ничего не печатается на экране. Что я делаю не так?

+0

Вы решили эту проблему, просто соблюдая принятый ответ? У меня есть аналогичная проблема с использованием частичного представления ... Если я использую partialview, сводка валидации не отображается, но если я ее не использую, сводка валидности отображается как ожидалось. У меня уже есть принятый ответ в моем коде ... – amp

ответ

1

Эта строка кода

return RedirectToAction("Details", new { id = model.AuctionId }); 

Возвращает экземпляр класса RedirectResult. Это обычно используется для перенаправления и не отображает вид. Если вы хотите отобразить дочернее действие в родительском представлении с помощью @Html.Action, вам нужно вернуть представление из этого дочернего действия, а не RedirectResult. И что RedirectResult не будет работать, даже если нет дочернего действия. Возвращение RedirectResult заставляет браузер выдавать свежий, все новые запросы на это действие. И состояние модели теряется в любом случае. Вы должны сделать что-то вроде

try 
{ 
    //some actions 
    return RedirectResult("Details", new { id = model.AuctionId }); 
} 
catch 
{ 
    ModelState.AddModelError(string.Empty, operation + @" Failure: " + message); 
    return View("Details", new { id = model.AuctionId }); 
} 
+0

Я уже пробовал это, хотя он должен быть немного другим, поскольку нет подробного представления. Я возвращаю View («ПодробностиEsf», аукцион). Проблема в том, что это вызывает бесконечный цикл. Действие [HttpPost] public ActionResult BidOnAuction (BidOnAuctionViewModel model) продолжает вызываться. –

+0

@Sachin показать нам код для DetailsEsf view – archil

+0

Есть ли способ, я могу получить его для вас. В этой области текста недостаточно места. –

2

заказовМои получить проверки сообщения на странице вы должны вернуться вид с моделью, так как модель имеет модельное состояние в нем, что-то вроде этого:

return View(Model); 

Это вернет модель BidOnAuction с проверкой Резюме ,

1

Вы не можете перенаправить на новое действие и ожидать, что будет смоделировано состояние модели.

Если модельState недействительна, просто верните (с видом (модель)) еще перенаправить на детали.

Если вам нужна информация об ошибке в представлении деталей, вы добавите ее в TempData или передадите ее в качестве необязательного параметра.

Смежные вопросы