ASP.NET MVC 2 Action Method получает нулевые аргументы - PullRequest
0 голосов
/ 28 февраля 2010

У меня проблема с приложением ASP.NET MVC, которое я разрабатываю. Я все еще довольно новичок в веб-разработке и, в частности, в MVC, поэтому, пожалуйста, прости меня, это действительно глупая ошибка новичка; -)

У меня есть вид, который отображает список продуктов. У каждого продукта есть ссылка «подробности», которую я хочу связать с представлением сведений об этом продукте. Итак, вот соответствующая разметка с точки зрения:

<% foreach (var item in Model) { %>
<tr>
    <td>
        <%= Html.ActionLink("Edit", "Edit", new { id=item.StockCode.ToString() }) %>
        <%= Html.ActionLink("Details", "Details", new { id=item.StockCode.ToString() })%>
    </td>
    <td>
        <%= Html.Encode(item.StockCode) %>
    </td>
    <td>
        <%= Html.Encode(item.Description) %>
    </td>
</tr>

Пока все хорошо. При наведении указателя мыши на ссылку сведений в веб-браузере ссылка отображается как:

http://localhost:40733/RawMaterial/Details/R8517

R8517 - это код товара. Вот что я ожидаю увидеть в своем методе действий. Вот метод действия:

//
// GET: /RawMaterial/Details/5

public ActionResult Details(string stockCode)
{
    return View(repository.GetByStockCode(stockCode));
}

Но ... при выполнении метода действия параметр (stockCode) имеет значение null.

Есть мысли?

Ответы [ 2 ]

4 голосов
/ 28 февраля 2010

Параметр, который необходимо принять, не должен быть «stockCode», это должно быть «id»

MVC пытается связать модель «id = item.StockCode.ToString ()» с параметром с таким же именем. Ваш метод действия должен быть:

public ActionResult Details(string id)
1 голос
/ 28 февраля 2010

+ 1 к ответу DM, но у вас также есть другой вариант. Вы можете зарегистрировать специальный маршрут для вашего случая. Примерно так:

routes.MapRoute("RawMaterial",  "RawMaterial/{action}/{stockCode}", 
    new { controller = "RawMaterial", action = "Index" } );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...