0
更新:找到我認爲是modelState.isValid爲false的原因。 該模型有7個屬性...和debbuging我發現模型只接收6個屬性從視圖。ModelState.IsValid無效。爲什麼我可以創建用戶?
我的複選框沒有發送到控制器?我應該怎麼做才能做到這一點?
這是視圖:
@using (Ajax.BeginForm("Register", "Account", new AjaxOptions { HttpMethod = "POST", OnSuccess = "closeDialog('RegistroUsuario', '<b>Usuário cadastrado com Sucesso!</b>', true)" }, new { id = "FormRegistroUsuario" }))
{
<fieldset>
<legend>Cadastro novo Usuário</legend>
<table id="changePassword">
<tr>
<td class="smallField">Username:</td>
<td>@Html.TextBoxFor(m => m.UserName,new { @class = "validate[required]" }) @Html.ValidationMessage("usernameVal", "*")</td>
</tr>
<tr>
<td>Password:</td>
<td>@Html.PasswordFor(m => m.Password, new { @class = "validate[required]" }) @Html.ValidationMessage("passwordVal", "*")</td>
</tr>
<tr>
<td>Repetir Senha:</td>
<td>@Html.PasswordFor(m => m.ConfirmPassword, new { @class = "validate[required,equals[Password]]" }) @Html.ValidationMessage("senhaVal", "*")</td>
</tr>
<tr>
<td>Email:</td>
<td>@Html.TextBoxFor(m => m.Email, new { @class = "validate[required,custom[email]]" }) @Html.ValidationMessage("emailVal", "*")</td>
</tr>
<tr>
<td>Pergunta Secreta:</td>
<td>@Html.TextBoxFor(m => m.SecretQuestion, new { @class = "validate[required]" }) @Html.ValidationMessage("secretVal", "*")</td>
</tr>
<tr>
<td>Resposta:</td>
<td>@Html.TextBoxFor(m => m.SecretQuestionPassword, new { @class = "validate[required]" }) @Html.ValidationMessage("awnserVal", "*")</td>
</tr>
<tr>
<td>Ativo:</td>
<td><input type="checkbox" name="status" id="status" value="Ativo" data-val="true"/> @Html.ValidationMessage("activeVal", "*")</td>
</tr>
</table>
<input type="submit" value="Criar Usuário" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only button-link"/>
</fieldset>
}
感謝...
這是一個很奇怪的行爲
我仍然得到用戶因爲某些原因產生。
由於已經存在用戶名,有些時候用戶沒有被創建。 (即使用戶不存在)..很奇怪
if (ModelState.IsValid)
{
MembershipProvider mp = Membership.Provider;
MembershipCreateStatus Status;
string erroMsg;
if (String.IsNullOrEmpty(Request.Form["status"]))
{
model.Active = false;
}
else
{
model.Active = true;
}
MembershipUser newUser = mp.CreateUser(model.UserName, model.Password, model.Email, model.SecretQuestion, model.SecretQuestionPassword, model.Active, Guid.NewGuid(), out Status);
try
{
if (newUser == null)
{
erroMsg = GetErrorMessage(Status);
return Content(erroMsg);
}
else
{
return Content("Usuário Cadastrado");
}
}
catch (MembershipCreateUserException e)
{
throw e;
}
catch (Exception e)
{
throw new MembershipCreateUserException("An exception occurred creating the user.", e);
}
}
else
{
return Content("isValid is false!");
}
很難告訴控制器代碼,您是否使用自定義MembershipProvider? – JOBG
這是我的供應商:<成員defaultProvider = 「AspNetSqlProvider」 userIsOnlineTimeWindow = 「15」> <添加名稱= 「AspNetSqlProvider」 類型= 「System.Web.Security.SqlMembershipProvider」 的connectionStringName = 「tgpwebgedString」 的applicationName =」 /」 enablePasswordRetrieval = 「假」 enablePasswordReset設置= 「真」 requiresQuestionAndAnswer = 「真」 requiresUniqueEmail = 「真」 了passwordFormat = 「散列」 maxInvalidPasswordAttempts = 「3」 minRequiredPasswordLength = 「7」/> –