由於我在學習ASP.NET MVC的過程中,遇到了一個問題,並陷入了一些麻煩ASP.NET MVC:忽略編輯時的字段
我試圖創建一個簡單博客,只是爲了測試我迄今爲止學到的東西。但是當涉及到編輯和離開一個領域時,我遇到了一個問題。
我想編輯我的博客上已提交的帖子,該帖子包含幾個字段:標題,標題,消息,作者和提交日期不應編輯,只是保持原樣。
下面是一些代碼:
我樁模型:
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)
a並提交相同的日期。但我敢打賭,還有另一種方式,而不是將它作爲源代碼中的隱藏字段?我的意思是這在另一個例子中並不安全?所以我想在這裏隱藏領域以外的東西。你們能幫我嗎?
如果我嘗試按原樣運行它。我得到一個錯誤,這是我的日期未設置,這是邏輯,因爲它想要更新那一個。但我不希望它。如果你能這樣說,我想讓它成爲可選項。
這與提交相同,我的意思是創建/寫入數據到數據庫? – aventic 2013-03-24 19:54:24
@KasperHyldalPedersen正確。 – 2013-03-24 19:55:18
這是行之有效的。我對'寫入數據庫'有個疑問,我該怎麼做?我如何檢查用戶在視圖中寫入的內容?如果我不應該採取糖果:) 現在我有這個在我寫的ActionResult: '如果(ModelState.IsValid){ \t \t \t \t post.Date = DateTime.Now; \t \t \t \t db.Posts.Add(post); \t \t \t \t db.SaveChanges(); \t \t \t \t return RedirectToAction(「Index」,「Home」); \t \t \t}' – aventic 2013-03-24 20:40:42