从视图到控制器不保留对象值

时间:2017-08-21 12:51:46

标签: asp.net-mvc razor

我正在使用模型将值从控制器传递到模型。假设我有第一个控制器操作方法:

    public ActionResult CreateADForm(SiteDirectionModel model){
        MyModel myModel= new MyModel{
            id = model.id, 
            name = model.name,
            //an so on
            siteDirection = model //a SiteDirectionModel object
        };
        return View(myModel);
    }

此方法的目的是预加载某些值,然后将其传递给具有以下形式的视图:

@model MyProject.Models.MyModel
@using (Html.BeginForm("ValidateForm", "Create", FormMethod.Post))
        {
            @Html.AntiForgeryToken()
            <hr />
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })
            <div class="form-group">
                @Html.LabelFor(m=>m.name, new { @class= "col-md-2 control-label" })
                <div class="col-md-10">
                    @Html.TextBoxFor(m => m.name, new { @class = "form-control" })
                    @Html.ValidationMessageFor(m => m.name, "", new { @class = "text-danger" })
                </div>
            </div>
            <input type="submit" value="Créer l'utilisateur" class="btn btn-primary" />

我的问题是,现在当我验证此表单时,我尝试检索SiteDirectionModel siteDirection但它始终为null。我想这样做,以便在表单无效的情况下,然后我返回到显示错误的表单(例如文本框未填充),但它不正常。我猜测在填写表单时必须归因于值,这就是为什么我一直都是null,但是你知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

表单验证在完成到服务器的往返(即表单POST之后)后发生。 因此,您必须将所有值发送回接收操作中所需的服务器。

为您需要的<?php $common_color = "#888888"; ?> <style type="text/css"> body{ color : <?php echo $common_color ?>; } h1{ color : <?php echo $common_color ?>; } </style> 属性添加隐藏字段。

siteDirection

或者,发送siteDirection的ID并再次从DB加载此实体。