0

私には領域があり、この領域にはPostControllerがあり、GETメソッドの名前を追加するアクションとPOSTメソッドの名前を追加するアクションがあります.フォームを送信した後、ポストバック後にモデル状態にエラーを追加しますが、検証メッセージは表示されません状態コードは次のとおりです:301 恒久的に移動!!!

私のビューモデル:

public class NewPostViewModel
{

    [Required(ErrorMessage = "Please enter title.")]
    public string Title { get; set; }

    [AllowHtml]
    [Required(ErrorMessage = "Please enter article content.")]
     public string Content { get; set; }

    [Required(ErrorMessage = "Please enter a tag.")]
    public string Tags { get; set; }

    public bool PublishNow { get; set; }
    public string PublishDate { get; set; }
    public string PublishTime { get; set; }
}

私の見解:

@model Soleimanzadeh.Models.ViewModels.NewPostViewModel

@{
    ViewBag.Title = "Add";
    Layout = MVC.Admin.Shared.Views.BaseLayout;
}
@using (Html.BeginForm(MVC.Admin.Post.Add(), FormMethod.Post))
{ 
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(false, null, new { @class = "alert" })
    <div class="row-fluid">
        <div class="span9">
            <div class="row-fluid">
                <div class="span8">
                    @Html.TextBoxFor(np => np.Title, new { @class = "span12", placeholder = "Title" })
                    @Html.ValidationMessageFor(model=>model.Title)
                </div>
            </div>
            <div class="row-fluid">
                <div class="span12">
                    @Html.TextAreaFor(np => np.Content)
                    @Html.ValidationMessageFor(model=>model.Content)
                </div>
            </div>
        </div>
        <div class="span3">
            <div class="row-fluid">
                <div class="post-options-container">
                    <div class="header">
                        Tags
                    </div>
                    <div class="content">
                        <input type="text" placeholder="tags" class="tagManager" style="width: 100px;" />
                    </div>
                </div>
            </div>
            <div class="row-fluid">
                <div class="post-options-container">
                    <div class="header">
                        Status
                    </div>
                    <div class="content">
                        <label class="checkbox">
                            @Html.CheckBoxFor(np => np.PublishNow)
                             Publish Now?
                        </label>
                        <div>
                            Publish Date:
                            @Html.TextBoxFor(np => np.PublishDate, new { @class = "calcInput" })
                        </div>
                        <div>
                            Publish Time:
                            @Html.TextBoxFor(np => np.PublishTime, new { @class = "timeInput" })
                        </div>
                        <div>
                            <input type="submit" value="Save"/>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
}

@*some scripts here*@

私のコントローラー:

public partial class PostController : Controller
{

public virtual ActionResult Add()
{
    var newPost = new NewPostViewModel();
    return View(MVC.Admin.Post.Views.Add, newPost);
}

[HttpPost]
[ValidateAntiForgeryToken]
public virtual ActionResult Add(NewPostViewModel post)
{
    ModelState.AddModelError("Content","Wrong");
    return this.View(MVC.Admin.Post.Views.Add, post);
}

}

また、コンテンツにはredactor html エディターを使用します。


解決:

URLを小文字に変換するためにhttp://lowercaseroutesmvc.codeplex.com/を使用しますが、フォームの送信後にリダイレクトされるエリアセクションとページでこのツールを有効にしていません。

4

0 に答える 0