ASP.NET MVC и передача идентификатора строго типизированному BeginForm - PullRequest
2 голосов
/ 03 февраля 2010

У меня проблемы с передачей идентификатора из URL в действие моего контроллера

Допустим, у меня есть этот URL: Bing / Index / 4

На моей главной странице я хотел бы создать форму, которая будет отправлена ​​в BingController SearchAction. Я сделал что-то вроде этого

using(Html.BeginForm<BingController>(action => action.Search(id)))

Как получить идентификатор (4 в этом примере) из URL, чтобы передать его в действие поиска?

Спасибо за вашу помощь

1 Ответ

3 голосов
/ 03 февраля 2010

Чтобы получить доступ к этим данным на главной странице, ваши контроллеры должны добавить их в ViewData, чтобы главная страница имела к ним доступ.

public ActionResults Index(string id)
{
   ViewData["SearchID"] = id;

   return View();
}

Затем на вашей главной странице вы можете получить к ним доступ.в ViewData

using (Html.BeginForm("Search", "Bing", { id = ViewData["SearchID"] })

Для строго типизированного представления у меня есть класс BaseModel, у которого есть свойства, необходимые для главной страницы, и все мои другие модели наследуют базовый класс.Примерно так ...

public class BaseModel
{
   prop string SearchID {get;set;}
}

public class HomeIndexModel : BaseModel
{

}

public ActionResults Index(string id)
{
   HomeIndexModel model = new HomeIndexModel();
   model.SearchID = id;

   return View(model);
}

Ваша главная страница будет выглядеть так:

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<BaseModel>" %>

<% using(Html.BeginForm<BingController>(action => action.Search(Model.SearchID))) { %>
...