[英]Assign Static Value to Field in Model
我的視圖使用戶將值輸入表單。 這些值傳遞給控制器,在控制器中,我使用dbset在表中創建新行。 有一個字段用作該行的標志,我不希望用戶定義/甚至不知道存在。 我的問題是,如何在用戶不必提供輸入的情況下將數據分配給該字段並將其傳遞給控制器? 在這種情況下,我希望為ACTION_TYPE字段分配值/字符串“添加”。
視圖
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
var action = Html.HiddenFor(model => model.ACTION_TYPE.ToString());
string val = "Add";
if (action == null){
action = MvcHtmlString.Create(val);
}
控制者
public ActionResult Create()
{
return View();
}
//
// POST: /Table8/Create
[HttpPost]
public ActionResult Create(HOLIDAY_DATE_TABLE holiday_date_table, tbl8_update_transactions tbl8_update_transaction)
{
if (ModelState.IsValid)
{
db.HOLIDAY_DATE_TABLE.Add(holiday_date_table);
db.SaveChanges();
db.tbl8_update_transactions.Add(tbl8_update_transaction);
db.SaveChanges();
return RedirectToAction("../Billing/HolidayDateTable");
}
return View(holiday_date_table);
}
桌子
CREATE TABLE HOLIDAY_DATE_TABLE
(
HID INT IDENTITY PRIMARY KEY,
TABLE_NUMBER nchar(2) NOT NULL,
HOLIDAY_DATE nchar(8) NOT NULL,
FIELD_DESCRIPTION nVARchar(43) NULL,
ACTION_TYPE nchar(6) NULL
);
CREATE TABLE tbl8_update_transactions
(
TID INT IDENTITY PRIMARY KEY,
TABLE_NUMBER nchar(2) NOT NULL,
HOLIDAY_DATE nchar(8) NOT NULL,
FIELD_DESCRIPTION nVARchar(43) NULL,
ACTION_TYPE nchar(6) NULL,
HID int,
FOREIGN KEY (HID) REFERENCES HOLIDAY_DATE_TABLE (HID) ON DELETE CASCADE
);
如果用戶未輸入此數據,則該數據不屬於用戶提交的表單。 將其從視圖中完全刪除,並在服務器端代碼中進行設置。 一種簡單的方法是在控制器動作中:
// completely guessing on types/models here, but you should get the idea...
holiday_date_table.ActionType = "Add";
db.HOLIDAY_DATE_TABLE.Add(holiday_date_table);
db.SaveChanges();
或者,您甚至可以默認在模型本身中設置它(這是理想的邏輯位置),其設計將在很大程度上取決於您的模型結構。 可以在構造函數中設置默認值,也可以在屬性中后期設置默認值,或者可以通過將“添加”與“編輯”的概念分成各自的模型來進行設置。
無論哪種方式,都不應該在視圖中顯示。 即使是隱藏字段,任何用戶都可以隨時更改該值。 您的代碼真正控制值的唯一方法是將其保留在服務器端。
順便說一句,每當您在視圖中聲明服務器端變量時,您很可能做錯了什么。 視圖不應該具有業務邏輯,它們只是將UI綁定到模型。 邏輯確實屬於模型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.