На мой взгляд, вызов ниже генерирует URL, оканчивающийся Задачи/Edit, но я хочу, чтобы генерировать URL как задачи/Edit/23Binding и маршрутизации или проблема URL поколение приложения ASP.Net Mvc
<%= Html.ActionLink<TaskController>("Edit Task", (x) => x.Edit("23"))%>
в Global.asax:
string taskController = NameResolver.NameOfController<TaskController>();
string editAction = NameResolver.NameOfAction<TaskController>(x => x.Edit(null));
routes.MapRoute(
"EditTasks",
"Tasks/Edit/{id}",
new { controller = taskController, action = editAction, id = string.Empty });
У меня также есть проблема с привязкой к этому действию. Значения, установленные из представления, не привязаны к моему параметру Edit. Он приходит null каждый раз, и я не устанавливал DefaultModelBinder в любом месте. Вот действие «Редактировать»:
public ActionResult Edit (string id)
{
//retrieve some data and pass it to view and return view
}
Так в чем проблема? Как я могу решить проблему url и binding? И да, я новичок Asp.Net Mvc :)
Большое спасибо. Для id вещь это фактически не целое число, для простоты я изменил его таким образом в образце кода. Еще один вопрос: могу ли я использовать строго типизированное имя действия, то есть не «Изменить», имеет ли Mvc такую полезность? – rovsen
@arch stanton: Я не вижу, как вы можете использовать строго типизированное имя действия, потому что Edit - это метод, а не класс без серьезного зависания, анализируя выражения LINQ. Я дам это выстрел, когда у меня будет время, но, если возможно, оно никогда не должно доходить до производства. Это был бы плохой хак, который не обслуживается. –
Я слышал, что MvcContrib поддерживает те сильно типизированные способы использования, как Html.ActionLink («Редактировать задачу», (x) => x.Edit («23»)). Но сам не пробовал. –
rovsen