是這樣的,今天我需要做一個片語功能,查詢新增刪除都可以,只有編輯有些問題
我進入編輯模式時沒有抓到我先前下拉市所選的值,存檔後也沒存到我所選的選項
而且我進入偵測模式時都有讀取到我選的值,但儲存後卻沒變化,請問該如何處理?
<div class="box-body">
<div class="form-flex-container">
<div class="row-flex">
<div class="col-label">
<label class="control-label">
作業別
</label>
</div>
<div class="col-input"> @Html.DropDownListFor(m=>m.OPERATING,newSelectList(Model.OperatingOptions, "NC_CODE", "NC_NAME"), new { @class = "form-control" })
</div>
</div><!-- /.row -->
view model
public class HDPharseViewModel
{
public string GUID { get; set; }
public string CID { get; set; }
public string OPERATING { get; set; }
public List<NCODE> OperatingOptions { get; set; }
public string HOSOUT { get; set; }
public string DIVISION { get; set; }
public string USERNAME { get; set; }
public string PHARSE_CONTENT { get; set; }
public string STATUS { get; set; }
public Nullable<System.DateTime> CRE_DATE { get; set; }
public string CRE_UID { get; set; }
public Nullable<System.DateTime> MOD_DATE { get; set; }
public string MOD_UID { get; set; }
public HD_PHARSE ToPharse(string modifyid)
{
HD_PHARSE hd = new HD_PHARSE();
hd.GUID = GUID;
hd.CID = CID;
hd.OPERATING = OPERATING;
hd.HOSOUT = HOSOUT;
hd.DIVISION = DIVISION;
hd.USERNAME = USERNAME;
hd.PHARSE_CONTENT = PHARSE_CONTENT;
hd.STATUS = STATUS;
hd.CRE_DATE = DateTime.Now;
hd.CRE_UID = CRE_UID;
hd.MOD_DATE = DateTime.Now;
hd.MOD_UID = MOD_UID;
return hd;
}
controller
//編輯
public ActionResult HDPharseEdit(string id)
{
HDPharseViewModel model = GetHDPharseViewModel(id);
HDPharseService hsrvc = new HDPharseService();
model.OperatingOptions = GetOperatingOptions();
return View("HDPharseEdit", model);
}
//GetHDPharseViewModel方法
private HDPharseViewModel GetHDPharseViewModel(string Guid)
{
HDPharseService hsrvc = new HDPharseService();
HD_PHARSE hPharse = hsrvc.FindGuid(Guid);
HDPharseViewModel mpharse = new HDPharseViewModel();
mpharse.FromPharse(hPharse);
return mpharse;
}
//判斷新增或編輯
public ActionResult AddOrUpdate(HDPharseViewModel model)
{
if (!ModelState.IsValid)
{
ViewBag.SaveResult = false;
return View("HDPharseEdit", model);
}
HD_PHARSE hpharse = new HD_PHARSE();
HDPharseService hsrvc = new HDPharseService();
model.OperatingOptions = GetOperatingOptions();
bool saveResult = false;
bool isAdd = false;
if (String.IsNullOrWhiteSpace(model.GUID) || new Guid(model.GUID) == Guid.Empty)
{
isAdd = true;
model.GUID = Guid.NewGuid().ToString();
}
hpharse = model.ToPharse(GetUserGuid());
if (isAdd)
{
saveResult = hsrvc.AddPharse(hpharse);
}
else
{
saveResult = hsrvc.UpdatePharse(hpharse);
}
ViewBag.SaveResult = saveResult;
return View("HDPharseEdit", model);
GetOperatingOptions 方法
public List<NCODE> GetOperatingOptions()
{
List<NCODE> optins = new List<NCODE>();
optins.Add(new NCODE() { NC_CODE = "", NC_NAME = "請選擇" });
optins.Add(new NCODE() { NC_CODE = "0", NC_NAME = "共通作業" });
optins.Add(new NCODE() { NC_CODE = "1", NC_NAME = "醫囑作業" });
return optins;
}
service層
public bool UpdatePharse (HD_PHARSE Pharse)
{
if (Pharse == null || Pharse.GUID == null)
{
return false;
}
HD_PHARSE dbPharse = _repo.HD_PHARSE.Where(x => x.GUID == Pharse.GUID).FirstOrDefault<HD_PHARSE>();
if(dbPharse != null)
{
dbPharse.OPERATING = Pharse.OPERATING;
dbPharse.STATUS = Pharse.STATUS;
dbPharse.PHARSE_CONTENT = Pharse.PHARSE_CONTENT;
return true;
}
else
{
return false;
}
}
有點長很不好意思,還請各位告訴我該如何解決,謝謝
看起來你在控制器中的 HDPharseEdit 方法裡面沒有傳遞所選擇的選項給視圖,所以在顯示頁面時會是預設值。你可以在這個方法中把所選擇的選項的值傳遞給視圖,例如:
public ActionResult HDPharseEdit(string id)
{
HDPharseViewModel model = GetHDPharseViewModel(id);
HDPharseService hsrvc = new HDPharseService();
model.OperatingOptions = GetOperatingOptions();
model.SelectedOperatingOption = model.OPERATING; // 傳遞所選擇的選項
return View("HDPharseEdit", model);
}
在你的 AddOrUpdate 方法中,你沒有將所選擇的選項的值設置到 hpharse 物件中,所以在存檔後沒有變化。你可以在這個方法中把所選擇的選項的值設置到 hpharse 物件中,例如:
hpharse = model.ToPharse(GetUserGuid());
hpharse.OPERATING = model.SelectedOperatingOption; // 設置所選擇的選項