Asp.Net MVC - Нечетная форма / проблема с контроллером - PullRequest
1 голос
/ 24 июня 2009

У меня действительно странная проблема с ASP.Net MVC.

У меня есть форма, которая отправляет 3 текстовых значения в метод действия, называемый create user (для простоты, скажем, это следующее);

public ActionResult CreateUser(string FirstName, string LastName, string Email)
    {
        var s = FirstName + LastName + Email;

        return RedirectToAction("Index");
    }

Скажите также, что моя форма

    <% using (Html.BeginForm("CreateUser", "User"))
   { %>

    <%=Html.TextBox(("FirstName")) %>
    <%=Html.TextBox(("LastName")) %>
    <%=Html.TextBox(("Email")) %>

    <div><input type="submit" value="Submit" /></div>

<% } %>

Теперь в моем методе действия на пользовательском контроллере значения FirstName, LastName и Email равны нулю!

Однако, если я скопирую тот же метод в другой контроллер (Game) и обновлю форму, чтобы опубликовать там, значения в методе не равны NULL! Я полностью озадачен этим.

Оба контроллера одинаковы - они наследуют один и тот же базовый класс, к ним применяются одинаковые атрибуты и т. Д.

РЕДАКТИРОВАТЬ: все заработало (не знаю, в чем была основная проблема).

У меня был пользовательский атрибут в моем методе Index на пользовательском контроллере (он по сути анализировал свойство HttpContext.Current.User.Identity.Name и автоматически передавал его в метод). По какой-то причине это было проблематично для метода Index, когда я его удалил, все стало работать как положено!

Это был мой метод Index раньше:

[Authorisation]
public Action Index(string userName){...}

и после

public Action Index() {...}

Ответы [ 2 ]

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

Судя по звукам вещей (работает, когда вы меняете контроллер, на который он отправляет сообщения), это, вероятно, будет связано с тем, что 'Пользователь' является зарезервированным словом некоторого типа.

Это имеет смысл. Пользователь используется в рамках asp.net для ссылки на текущий объект IPrincipal.

Так что да, переименуйте свой контроллер на что-то другое.

HTHS, Charles

0 голосов
/ 25 июня 2009

Попробуйте добавить точку останова внутри CreateUser и взгляните на содержимое Request.Form (или QueryString) или ValueProvider. Ключи могут быть разными.

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