У меня есть приложение .net mvc с действием контроллера, которое принимает регистрационные записи пользователя. У меня есть следующие поля пользовательского интерфейса: адрес электронной почты, имя, фамилия, пароль и пароль подтверждения. Некоторые из этих полей не относятся к объекту модели (т. Е. Подтверждение пароля не относится к модели пользователя, только пароль). Моя форма регистрации находится на том же представлении, что и форма входа в систему. Таким образом, у меня есть независимые формы на одной и той же точке зрения, каждый из которых возвращается к различным действиям.Asp.NET MVC Binding - использование атрибута привязки для назначения префикса для простого типа
Я понял, что могу назначать префиксы элементам формы для разделения подобных полей между регистром и логином. Проблема была в проверке, если произошла ошибка, представление было повторно загружено, было показано сообщение проверки, но поля, такие как электронная почта (которые существуют в логине и регистре), будут заполнены ранее введенным адресом. Кроме того, у меня была сводка валидации выше полей входа и регистрации. Когда во время регистрации произошла ошибка, в обоих итогах проверки были заполнены сообщения об ошибках. Я решил назначить префиксы для полей (register.fieldname и login.fieldname), которые могут помочь в этих проблемах.
Поэтому, когда действие регистра обрабатывает сообщение, оно больше не находит значения для полей формы регистрации и вместо этого возвращает null. Ниже приведена сигнатура метода, используемая для этого действия ...
Любой вклад в то, что здесь происходит, будет отличным.
Благодаря Джереми
public ActionResult Register([Bind(Prefix = "Register")] string emailAddress, [Bind(Prefix = "Register")] string firstName, [Bind(Prefix = "Register")] string LastName, [Bind(Prefix = "Register")] string password, [Bind(Prefix = "Register")] string confirmPassword)
и следующее из моего щ, она представляет собой форму регистрации ....
<h2>Create a New Account</h2>
<p>
Use the form below to create a new account.
</p>
<p>
Passwords are required to be a minimum of <%=Html.Encode(ViewData["PasswordLength"])%> characters in length.
</p>
<%= Html.ValidationSummary() %>
<% using (Html.BeginForm("register", "account")) { %>
<div>
<fieldset>
<legend>Account Information</legend>
<table>
<tr>
<td><label for="EmailAddress">Email Address:</label></td>
<td>
<%= Html.TextBox("Register.EmailAddress") %>
<%= Html.ValidationMessage("Register.EmailAddress")%>
</td>
</tr>
<tr>
<td><label for="FirstName">First Name</label></td>
<td>
<%= Html.TextBox("Register.FirstName")%>
<%= Html.ValidationMessage("Register.FirstName")%>
</td>
</tr>
<tr>
<td><label for="LastName">Last Name</label></td>
<td>
<%= Html.TextBox("Register.LastName")%>
<%= Html.ValidationMessage("Register.LastName")%>
</td>
</tr>
<tr>
<td><label for="password">Password:</label></td>
<td>
<%= Html.Password("Register.password")%>
<%= Html.ValidationMessage("Register.password")%>
</td>
</tr>
<tr>
<td><label for="confirmPassword">Confirm password:</label></td>
<td>
<%= Html.Password("Register.confirmPassword")%>
<%= Html.ValidationMessage("Register.confirmPassword")%>
</td>
</tr>
<tr>
<td colspan="2" class="alignright">
<input type="submit" value="Register" />
</td>
</tr>
</table>
</fieldset>
</div>
<% } %>
</div>
Вы можете показать остальную часть регистра()? (По крайней мере, биты, которые заполняют модель перед возвратом.) –
Функциональность регистрации распространяется на некоторые дополнительные классы. В простейшем объяснении я создаю новую учетную запись и пользовательский объект, используя значения, переданные формой. Затем я обновляю свою модель с помощью LINQ. – Jeremy