0

ユーザーがオブジェクトを作成してデータベースに保存できるようにしようとしています。私はそれをすべて正しく足場にし、コントロールを次のように変更しました:

    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>

特定の値をデフォルトにするために、ジョブのインスタンスを作成し、それをコントローラーを介してビューに渡しました。具体的には、コントローラーに渡された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として保存され、正しく機能しますが、ユーザーはそれを表示および編集できます。

私はこれを正しく行っていますか?

4

1 に答える 1

1

ユーザーがこのIDを編集できないようにします(これは表示されないはずです)

これに使用@Html.HiddenFor(Function(model) model.CustomerId)します。ビューからコントローラーに値を保持しますが、ユーザーには表示されません。

于 2012-08-14T21:04:10.647 に答える