PDA

View Full Version : خطا در ارسال مدل به اکشن



alirezaavini
سه شنبه 23 بهمن 1397, 11:59 صبح
سلام
من یه ویو دارم که داخلش یه مدل ارسال میکنم به یه اکشن اما مدل به صورت کامل به اکشن ارسال نمیشه
کد اکشن:


public IActionResult Register()
{
return View();
}
[HttpPost]
public IActionResult Register(RegisterViewModel register)
{
if (ModelState.IsValid)
{
if (_user.IsMobileNumberExist(register.Mobile))
{
ModelState.AddModelError("Mobile","این شماره موبایل قبل ثبت نام کرده است");
return RedirectToAction(nameof(Login));
}
else
{
User user = new User()
{
IsActive = false,
Mobile=register.Mobile,
Code=CodeGenerator.ActiveCode(),
Password=HashGenerator.EncodIngPassWithMD5(registe r.Password),
RoleId=2


};
_user.AddUser(user);
return RedirectToAction(nameof(Login));


}
}
else
{
return View(register);
}

}


کد ویو



@model IdentityTest.ViewModel.RegisterViewModel



<form asp-action="Register">


<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Mobile" class="control-label"></label>
<input asp-for="Mobile" class="form-control" , placeholder="شماره موبایل" />
<span asp-validation-for="Mobile" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Password" class="control-label"></label>
<input asp-for="Password" class="form-control" , placeholder="کلمه عبور" />
<span asp-validation-for="Password" class="text-danger"></span>
</div>
<div class="form-group">
@*<label asp-for="ConfirmPassword" class="control-label"></label>*@
<input asp-for="ConfirmPassword" class="form-control" , placeholder="تأیید کلمه عبور" />
<span asp-validation-for="ConfirmPassword" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="ساخت حساب" class="btn-red pull-right" />
<a asp-action="Login" class="btn-red pull-left">وارد شوید</a>
</div>
</form>

ویومدل:



public class RegisterViewModel
{
[Display(Name = "شماره همراه:")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
[MaxLength(11, ErrorMessage = "مقدار {0} نمی تواند بیشتر از {1} باشد")]
public string Mobile { get; set; }
//
[Display(Name = "رمز عبور:")]
[MaxLength(50, ErrorMessage = "مقدار {0} نمی تواند بیشتر از {1} باشد")]
[DataType(DataType.Password)]
public string Password { get; set; }


//
[Display(Name = "رمز عبور:")]
[MaxLength(50, ErrorMessage = "مقدار {0} نمی تواند بیشتر از {1} باشد")]
[DataType(DataType.Password)]
[Compare("Password",ErrorMessage ="کلمه عبور باید یکسان باشد")]
public string ConfirmPassword { get; set; }




}




بعد از کلیک روی دکمه submit وارد اکشن register میشه که هیچ پارامتر ورودی نداره.
در صورتی که باید وارد اکشن registerی که پارامتر ویومدلو داره بشه.
و تو adress bar هم فقط یک ؟ اضاف میشه
لطفا راهنمایی کنید.

soroush10
چهارشنبه 24 بهمن 1397, 22:29 عصر
سلام دوست عزیز ، برای متد اول [httpGet] رو ست کنید و دوم اینکه توی ویو شما برای تگ فرم باید method رو برابر post قرار بدید...



[HttpGet]
public IactionResult Register
}
return view
{


<form asp-action="register method="Post"">