Добавить значение в RoutValues ​​и сохранить текущие значения в ASP.NET MVC 3

У меня есть представление с двумя формами один из них для объявления строк на странице. В посте мне нужно, чтобы мой URL был таким же и просто добавить новый параметр. сейчас я использую вот так:

[HttpPost]
public ActionResult Index(FormCollection collection) {

    //Calculate Row Count

    return RedirectToAction("Index", new { RC = RowCount });

   }

с этой реализацией все мои параметры теряются и просто RC = rowcountnumber заменены. Как мне сохранить параметры и просто добавить новые RC к этому? Какой самый быстрый способ сделать это? здесь есть проблемы с производительностью?

3 ответа

Решение

Проверьте это, я не уверен, что это быстрее или насчет производительности, но сработало:

RouteValueDictionary rt = new RouteValueDictionary();
    foreach(string item in Request.QueryString.AllKeys)
      rt.Add(item,    Request.QueryString.GetValues(item).FirstOrDefault());

  rt.Add("RC", RowCount);
    return RedirectToAction("Index", rt);

К сожалению, я не могу проверить это прямо сейчас, но я подозреваю, что это будет работать (хотя это изменяет параметр коллекции). И это будет хорошо работать, так как он не копирует какие-либо предметы из старой коллекции; просто добавив один элемент к нему.

    [HttpPost]
    public ActionResult Index(FormCollection collection)
    {
        //Calculate Row Count
        collection.Add("RC", RowCount);
        return RedirectToAction("Index", collection);
    }

Сделать форму GET не POST потому что запрос ничего не меняет на сервере, поэтому GET глагол является более подходящим, а также GET глагол передаст все значения формы как параметры строки запроса, так что вы получите желаемый эффект

сделать это в Html.BeginForm третий параметр должен быть FormMethod.Get

Другие вопросы по тегам