Странная проблема при публикации в действие ASP.NET MVC - PullRequest
0 голосов
/ 04 июня 2009

У меня есть простая HTML-форма с несколькими полями ввода. Когда я нажимаю сохранить, он находит правильный метод, но данные странные. Когда у меня есть имя поля формы, совпадающее с именем поля в маршруте, переданное значение - это мои данные поля формы, а не данные маршрута.

например.

Представьте, что у вас следующий маршрут.

// Both Get/Post
routes.MapRoute(
    "User-Edit",
    "user/{displayName}/edit",
    new { controller = "Account", action = "edit" });

и следующий метод ...

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit([Bind(Exclude = "UserId")]string displayName, 
                               FormCollection formValues)

{...}

Теперь обратите внимание, как у маршрута есть переменная displayName, а у действия контроллера также есть аргумент, называемый displayName? Ну, данные аргумента - это данные из формы, а НЕ из маршрута.

Я не уверен, как я могу убедиться, что данные аргумента являются данными маршрута?

Это единственное исправление для меня, чтобы переименовать переменную маршрута с displayName на routeDisplayName или что-то еще?

1 Ответ

1 голос
/ 04 июня 2009

Соглашения ModelBinding предусматривают, что параметр заполняется из:

  • значение request.form, если оно существует (ваше существует!)
  • затем, RouteData.Values ​​
  • затем request.querystring
  • затем ноль

Вы должны (а) переопределить это поведение по умолчанию или (б) переименовать значение вашего маршрута.

Я бы пошел с б.

Mike

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...