ASP.NET MVC在控制器中为视图设置了默认值
本文关键字:视图 设置 默认值 NET MVC 控制器 ASP | 更新日期: 2023-09-27 18:24:16
请原谅,我只是在学习mvc。我有一个管理项目和实用程序的应用程序。对于每个项目,可以有多个实用程序。有一个"项目"页面列出了所有项目,如果您单击某个项目,它会列出与之相关的所有实用程序。项目屏幕上还有一个按钮,允许您将实用程序添加到该项目中。因此,当你点击项目,然后点击"添加实用程序"按钮时,它会弹出一个表单,允许你向该项目添加实用程序。该表格预先填写了项目ID、公用事业ID和所有者,取自项目控制器信息。我想做的是将"实用程序"中的一个字段(搬迁费用)的默认值设置为0.00。因此,如果用户没有更改它,它在数据库中显示为0.00。看起来很简单,对吧?
这是我目前在控制器中为实用程序的Get方法(来自前一个线程的建议)编写的代码,以及我将其更改为的内容
之前:
// GET: /Utility/Create
public ActionResult Create(int? ProjectID)
{
CreateDropDownListForCreateOrEdit(ProjectID);
return View();
}
之后:
public ActionResult Create(int? ProjectID)
{
CreateDropDownListForCreateOrEdit(ProjectID);
// initialize the model and set its properties
UtilityDTO model = new UtilityDTO
{
Est_Relocation_Expense = 0M
};
// return the model
return View(model);
}
我的观点是这样的:
@Html.TextBoxFor(model => model.Est_Relocation_Expense, "{0:0.00}")
这很好。。。它会将默认值添加到字段中。。。但是,它会丢失从项目控制器检索到的预先填充的项目id、实用程序id和所有者信息(而不是预先填充)。
有人知道这里可能出了什么问题吗?如果需要的话,我也可以从控制器中提供其他代码,但它很长,所以不确定还能发布什么。
添加了项目id:的视图
<div class="form-group">
@Html.LabelFor(model => model.Project_ID, new { @class = "control-label col-md-2 CreateEditFieldNamesSpan" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.Project_ID, (SelectList)ViewBag.VBProjectIDAndName, "---Select Project---")
@Html.ValidationMessageFor(model => model.Project_ID)
</div>
</div>
在将模型传递到视图之前,需要设置模型中属性的值。您当前唯一的Est_Relocation_Expense
值设置。如果您希望下拉列表显示与方法中的ProjectID
参数相关联的选项,则将方法修改为
public ActionResult Create(int? ProjectID)
{
CreateDropDownListForCreateOrEdit(ProjectID);
UtilityDTO model = new UtilityDTO
{
Project_ID = ProjectID, // add this
Est_Relocation_Expense = 0M
};
return View(model);
}
旁注:不需要将ProjectID
的值发送到CreateDropDownListForCreateOrEdit()
方法。从您现在删除的代码中,它只用于设置SelectList
的selectedValue
属性,在将dropdownlist绑定到属性时会忽略该属性。您只需要使用构造函数public SelectList(IEnumerable items, string dataValueField, string dataTextField)