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>

ASP.NET MVC在控制器中为视图设置了默认值

在将模型传递到视图之前,需要设置模型中属性的值。您当前唯一的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()方法。从您现在删除的代码中,它只用于设置SelectListselectedValue属性,在将dropdownlist绑定到属性时会忽略该属性。您只需要使用构造函数public SelectList(IEnumerable items, string dataValueField, string dataTextField)