0

私のコントローラーには、これらのアクションがあります

public ActionResult Index()
        {
            return View();
        }

        [HttpGet]
        public ActionResult Register()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Register(RegisterModel user)
        {
            if (ModelState.IsValid )
            {
                var regUser = _db.Users.Create();

                regUser.UserName = user.UserName;
                regUser.Password = user.Password;

                _db.Users.Add(regUser);
                _db.SaveChanges();
            }

            return RedirectToAction("Index");
        }

そして私の見解はこのようなものです

@model BootstrappingMvc.Models.RegisterModel
@{
    ViewBag.Title = "Register";
    Layout = "~/Views/Shared/_BootstrapLayout.empty.cshtml";
}


<form class="form-signin">
    <h2 class="form-signin-heading">Register New User</h2>
    <div class ="input-block-level">@Html.TextBoxFor(model=>model.UserName, new{@placeholder = "UserName"})</div>
    <div class ="input-block-level">@Html.PasswordFor(model=>model.Password, new{@placeholder ="Password"})</div>
    <div class ="input-block-level">@Html.PasswordFor(model=>model.ConfirmPassword, new{@placeholder = "Confirm Password"})</div>

    <button class="btn btn-large btn-primary" type="submit">Register</button>
</form>

これが私のRegisterModel

public class RegisterModel
    {
        public int Id { get; set; }

        [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; }
    }

[httpPost] ユーザーが登録ボタンをクリックしたときにコントローラーのアクションに転送されるべきではありませんか? 現在[httpget]、ボタンをクリックするとアクションが実行され、ブラウザでこれを取得しますhttp://localhost:47944/Portal/Register?UserName=Biplov+&Password=123456&ConfirmPassword=123456

ブラウザでこれらの値を取得する方法と、アクションに転送されない理由を本当に理解できません[httpPost]

4

3 に答える 3

1

コントローラーのポスト アクションにビューを投稿するには、コードに次の行を追加する必要があります。

<form class="form-signin" method="post" action="Register">

<h2 class="form-signin-heading">Register New User</h2>

<div class ="input-block-level">@Html.TextBoxFor(model=>model.UserName,new{@placeholder = "UserName"})</div>

<div class ="input-block-level">@Html.PasswordFor(model=>model.Password,new{@placeholder ="Password"})</div> <div class ="input-block-level">@Html.PasswordFor(model=>model.ConfirmPassword,new{@placeholder = "Confirm Password"})</div>

<button class="btn btn-large btn-primary" type="submit">Register</button></form>

于 2013-06-01T10:04:23.173 に答える
0
@using(Html.BeginForm("Register","Controller to be forwarded",FormMethod.Post))
{
    <h2 class="form-signin-heading">Register New User</h2>
    <div class ="input-block-level">@Html.TextBoxFor(model=>model.UserName, new{@placeholder = "UserName"})</div>
    <div class ="input-block-level">@Html.PasswordFor(model=>model.Password, new{@placeholder ="Password"})</div>
    <div class ="input-block-level">@Html.PasswordFor(model=>model.ConfirmPassword, new{@placeholder = "Confirm Password"})</div>

    <button class="btn btn-large btn-primary" type="submit">Register</button>
}

Htmlヘルパーを使用してフォームを作成し、パラメーターを追加FormMethod.Postすると確実になると思います。

于 2014-03-28T07:49:44.733 に答える