Я создаю веб-приложение для обмена сообщениями в ASP.NET и испытываю некоторые проблемы при отображении пользователю сообщения об ошибке, если они отправляются на отправку сообщения, и есть что-то неправильно.ASP.NET MVC: Возвращение представления с неповрежденным querystring
Пользователь может просматривать профили пользователей, а затем нажать «отправить сообщение». Следующее действие называется (Ссылка/сообщение/сотвори = имя пользователя?) И показывает их на страницу, где они могут войти в их сообщение и отправить его:
public ActionResult Create(string to)
{
ViewData["recipientUsername"] = to;
return View();
}
На странице, которая отображается, имя пользователя вводится в скрытое поле ввода. Когда пользователь нажимает кнопку «отправить»:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection collection, string message)
{
try
{
//do message stuff that errors out
}
catch
{
ModelState.AddModelErrors(message.GetRuleViolations()); //adding errors to modelstate
}
return View();
}
Так что теперь сообщение об ошибке отображается в пользовательском штрафа, однако URL изменяется в том, что он больше не имеет строки запроса (/ сообщение/создать). Опять же, это было бы хорошо, за исключением того, что когда пользователь нажимает кнопку обновления, ошибки страницы в качестве действия «Создать» больше не имеют параметра «to».
Так что я предполагаю, что мне нужно как-то поддерживать мой запрос. Есть ли способ сделать это или мне нужно вообще использовать другой метод?
Поскольку метод Create принимает строку '' to', то при возврате View 'to' все еще будет задано значение в Url (querystring или где бы вы ни устанавливали правила маршрутизации). Вы говорите, что как только вы вызываете 'return View()' Url больше не содержит "to" в querystring? –
Хмм ... Я думаю, вы, возможно, просто ответили на мой вопрос. Чтобы упростить мое действие выше, я просто добавил его как параметр к сообщению Создать действие. Обновился, чтобы показать фактический код. Я получаю получателя по коллекции ['recipientUsername']. Если я изменю это на параметр действия create, будет ли он исправлен? Если да, напишите ответ, и я помету его. (также, да - url больше не содержит 'to' в querystring) – ajbeaven