没有编辑器字段项不保存

时间:2012-08-14 20:59:59

标签: vb.net asp.net-mvc-3 razor

我试图让用户创建一个对象并将其保存到数据库中。我已正确搭建了所有这些,并将我的控制权修改为以下内容:

    Function Create(id As Integer) As ViewResult
        ViewBag.id = id
        Dim job As Job = New Job
        job.CustomerId = id
        job.JobAmount = 0
        job.JobDate = Date.Now()
        job.JobStatus = "Active"
        Return View(job)
    End Function

然后返回以下视图:

        @ModelType Laundry.Job

        @Code
            ViewData("Title") = "Create"
        End Code

        <h2>Create</h2>

        <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
        <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

        @Using Html.BeginForm()
            @Html.ValidationSummary(True)
            @<fieldset>
                <legend>Job</legend>

                <div class="editor-label">
                    @Html.LabelFor(Function(model) model.JobDate)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(Function(model) model.JobDate)
                    @Html.ValidationMessageFor(Function(model) model.JobDate)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(Function(model) model.BillId)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(Function(model) model.BillId)
                    @Html.ValidationMessageFor(Function(model) model.BillId)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(Function(model) model.CustomerId)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(Function(model) model.CustomerId)
                    @Html.ValidationMessageFor(Function(model) model.CustomerId)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(Function(model) model.JobStatus)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(Function(model) model.JobStatus)
                    @Html.ValidationMessageFor(Function(model) model.JobStatus)
                </div>

                <p>
                    <input type="submit" value="Create" />
                </p>
            </fieldset>
        End Using

        <div>
            @Html.ActionLink("Back to List", "Index")
        </div>

我创建了一个job实例,并通过控制器将其传递给视图,以便默认某些值。具体来说,我需要创建一个id传递给控制器​​的作业对象,但我不希望用户能够编辑这个id(他们不应该看到这个)。我想如果我只是从我的观点中删除了以下内容:

                <div class="editor-label">
                    @Html.LabelFor(Function(model) model.CustomerId)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(Function(model) model.CustomerId)
                    @Html.ValidationMessageFor(Function(model) model.CustomerId)
                </div>

该对象仍将保存在我在控制器中设置的customerId但是,如果我保存它时删除此代码似乎将customerid保存为0,当它在那里它正常工作但用户可以查看和编辑它。

我这样做是否正确?

1 个答案:

答案 0 :(得分:1)

  

我不希望用户能够编辑此ID(他们不应该看到这个)

使用@Html.HiddenFor(Function(model) model.CustomerId)。它会将值从视图持久保存到控制器,但对用户不可见。