我知道这很奇怪,但请耐心等待。我需要在我的应用程序的一部分上为表单输入设置默认状态/值。
在我的“MainController”中,我拉出一部分(或某种“包装”)页面,然后从该主页拉出部分视图。这是一个伪代码示例:
User goes to Main ->
MainController/Index Called
-> User clicks Link A ->
AJAX .load() pulls html from PartialViewA into #partialContainer
-> User clicks Link B ->
AJAX .load pulls html from PartialViewB into #partialContainer
这是 AJAX 调用:
$("#mainPanel").load('@Url.Action("GetModule","Settings")' + '?partialName=' + moduleName);
...以及处理它的相应服务器端操作:
public ActionResult GetModule(string partialName)
{
return PartialView(partialName);
}
它对我来说非常有用,每个模块上都有很多表单字段,所有这些都可以与彼此和服务器很好地交互,所以这不是我的问题。问题是从 dbase 为部分视图中包含的表单字段设置默认值。
例如,“常规”部分有许多复选框,它们将确定应用程序的各个部分如何显示。我想从数据库中提取预先存在的布尔值,当从 GetModule() 中提取部分时,将这些值设为默认值。
我环顾四周,恐怕我将部分内容拉入主页的方式可能是问题所在。我想我可以像这样将默认值构建到构造函数中:
public class GeneralViewModel
{
public GeneralViewModel()
{
var Data = from m in dataContext.Table
where m.UserID == _id
select new
{
m.Data1,
m.Data2,
};
foreach(var setting in Data)
{
Checkbox1 = Convert.ToBoolean(setting.Data1); // Conversion from bool? to bool
Checkbox2 = Convert.ToBoolean(setting.Data2); // Conversion from bool? to bool
}
}
public bool Checkbox1 { get; set; }
public bool Checkbox2 { get; set; }
}
但似乎构造函数永远不会被调用。这是有道理的,除非您考虑到我的表单字段不仅可以正确呈现,而且与数据库的通信也很好。所以问题是,我做错了什么?是我调用 Partial 的方式还是我在为我的 VM 值分配值时遗漏了一些东西?
一如既往,谢谢!