Я получаю нулевые значения, когда пытаюсь создать нового пользователя в этой форме регистрации. Я использую зависимости WebMatrix.WebData. Что я хочу сделать, это просто передать значения, которые я ввожу в форму, и значения, которые я ввожу в раскрывающихся списках, в контроллер. Кажется, я не могу этого сделать, потому что все возвращается в ноль:
Сначала в моем Razor View, где я ввожу данные, которые у меня есть:
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Registration Form</legend>
<ol class="comtrexBlue-text">
<li>
@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName)
</li>
<li>
@Html.LabelFor(m => m.Password)
@Html.PasswordFor(m => m.Password)
</li>
<li>
@Html.LabelFor(m => m.ConfirmPassword)
@Html.PasswordFor(m => m.ConfirmPassword)
</li>
<li>
@Html.LabelFor(m => m.Email)
@Html.TextBoxFor(m => m.Email)
</li>
</ol>
<button class="btn larger" type="submit">Create</button>
</fieldset>
}
Вот что у меня в контроллере:
````[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult UserCreateNew(string dummy)
{
var m = new UserCreateNewViewModel();
m.UserNumber = Convert.ToInt32(Session["UserNumber"]);
DataTable dt = new DataTable();
dt = new DataTable();
string constr = ConfigurationManager.ConnectionStrings["strCnnStore_Data"].ConnectionString;
dt = new DataTable();
string strSQL = "SELECT * FROM UserStoreDefinition"
+ " WHERE (UserStoreDefinition.UserNumber = " + m.UserNumber + ")";
using (DataAccess da = new DataAccess(constr))
{
dt = da.GetDataTable(strSQL, CommandType.Text);
}
// Convert a DataTable to a list.
m.lstStoreDefinition = LinqExtensions.ToListof<UserStoreDefinition>(dt);
dt = new DataTable();
strSQL = "SELECT distinct StoreOwnerName, StoreOwnerNumber FROM UserStoreDefinition"
+ " WHERE (UserStoreDefinition.UserNumber = " + m.UserNumber + ")"
+ " AND (UserStoreDefinition.StoreOwnerNumber <> -1)";
using (DataAccess da = new DataAccess(constr))
{
dt = da.GetDataTable(strSQL, CommandType.Text);
}
m.lstStoreOwnerDefinitions = LinqExtensions.ToListof<UserStoreDefinition>(dt);
dt = new DataTable();
strSQL = "SELECT distinct StoreRegionName, StoreRegionNumber FROM UserStoreDefinition"
+ " WHERE (UserStoreDefinition.UserNumber = " + m.UserNumber + ")"
+ " AND (UserStoreDefinition.StoreRegionNumber <> -1)";
using (DataAccess da = new DataAccess(constr))
{
dt = da.GetDataTable(strSQL, CommandType.Text);
}
m.lstStoreRegionDefinitions = LinqExtensions.ToListof<UserStoreDefinition>(dt);
dt = new DataTable();
//strSQL = "StoreTypeDefinitions";
strSQL = "SELECT distinct StoreTypeName, StoreTypeNumber FROM UserStoreDefinition"
+ " WHERE (UserStoreDefinition.UserNumber = " + m.UserNumber + ")"
+ " AND (UserStoreDefinition.StoreTypeNumber <> -1)";
using (DataAccess da = new DataAccess(constr))
{
dt = da.GetDataTable(strSQL, CommandType.Text);
}
m.lstStoreTypeDefinitions = LinqExtensions.ToListof<UserStoreDefinition>(dt);
# endregion
if (ModelState.IsValid)
{
string registerToken =
WebMatrix.WebData.WebSecurity.CreateUserAndAccount(m.UserName, m.Password, new { Email = m.Email }, true);
SimpleSecurity.WebSecurity.ConfirmAccount(registerToken);
string confirmationToken =
WebMatrix.WebData.WebSecurity.GeneratePasswordResetToken(m.UserName);
dynamic email = new Email("ChngPasswordEmail");
email.To = m.Email;
email.UserName = m.UserName;
email.baseUrl = GetBaseUrl();
email.ConfirmationToken = confirmationToken;
email.Send();
}
return RedirectToAction("UserList");
} ````
и это модель представления регистрации, которая наследуется моим пользователем. Создайте новую модель представления:
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
[Required]
[Display(Name = "Email")]
public string Email { get; set; }
} ````
I am getting an error when I click the create button on this line: ```` string registerToken =
All of the values(m.UserName, m.Password and m.Email) are NULL.