私には領域があり、この領域には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/を使用しますが、フォームの送信後にリダイレクトされるエリアセクションとページでこのツールを有効にしていません。