ASP.NET MVCの学習を進めていると、質問が発生し、問題が発生しました。
これまでに学んだことをテストするために、簡単なブログを作成しようとしています。しかし、フィールドの編集と終了に関しては、問題が発生します。
ブログで既に送信された投稿を編集しようとしていますが、投稿にはいくつかのフィールドが含まれています。ID、ヘッドライン、メッセージ、作成者、送信日ですが、編集しないでください。そのままにしておきます。
ここにいくつかのコードがあります:
私の投稿モデル:
namespace MyBlock.Models
{
public class Post
{
public int Id { get; set; }
[Required]
public string Author { get; set; }
[Required]
public string Headline { get; set; }
[Required]
public string Message { get; set; }
public DateTime Date { get; set; }
}
}
私の編集:
[HttpGet]
public ActionResult Edit(int id = 0)
{
Post post = db.Posts.Find(id);
if (post != null) {
return View(post);
}
return HttpNotFound();
}
[HttpPost]
public ActionResult Edit(Post post)
{
if (ModelState.IsValid) {
db.Entry(post).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index", "Home");
}
return View(post);
}
そして編集のための私の見解:
@model MyBlock.Models.Post
@{
ViewBag.Title = "Edit";
}
<h2>Rediger "@Model.Headline"</h2>
@using (Html.BeginForm()) {
@Html.LabelFor(u => u.Author)
@Html.TextBoxFor(u => u.Author)
@Html.LabelFor(u => u.Headline)
@Html.TextBoxFor(u => u.Headline)
@Html.LabelFor(u => u.Message)
@Html.TextAreaFor(u => u.Message)
<input type="submit" value="Gem" />
}
私は投げることができ@HiddenFor(u => u.Date)
、同じ日付が提出されることを知っています。しかし、ソースコードの隠しフィールドとしてそれを持っている以外の方法があるに違いありませんか?別の例では、これはそれほど安全ではないということですか?だから私はここに隠されたフィールド以外のものが欲しいです。助けてくれませんか?
これをそのまま実行しようとすると。日付が設定されていないというエラーが発生します。これは、日付も更新するためのロジックです。しかし、私はそれを望んでいません。あなたがそれを言うことができるならば、私はそれをオプションのままにしておきたいです。