C# 在表单c中错误获取模型名属性#

C# 在表单c中错误获取模型名属性#,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我把模特的名字弄错了 而不是这样 <input class="text-box single-line" data-val="true" data-val-required="آدرس دریافت محصول اجباری میباشد." id="Address" name="Address" type="text" value=""> 我

我把模特的名字弄错了 而不是这样

<input class="text-box single-line" data-val="true" data-val-required="آدرس دریافت محصول اجباری میباشد." id="Address" name="Address" type="text" value="">
我的看法是:

@model IList<identity2.ViewModels.OrderIndexViewModel>
@using System.Globalization;
@using identity2.Models;
@{
                var mod = Model[0];
                var dt = DateTime.Now;
                PersianCalendar pc = new PersianCalendar();
                var timenow = @pc.PearsianDate(dt);
}

<h4>سبد خرید</h4>
<div class="alert alert-warning alert-dismissible fade show" role="alert">
    <strong>توجه!</strong> <p>کلیه محصولات در روز پنج شنبه از ساعت 13 الی  19 به صورت رایگان ارسال میگردد در غیر این صورت هزینه پیک بر عهده مشتری می باشد.</p>
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
        <span aria-hidden="true">&times;</span>
    </button>
</div>
<table class="table table-responsive">
    <tr>
        <th>نام محصول</th>
        <th>تعداد سفارش </th>
        <th>قیمت کل</th>
        <th>عملیات</th>
    </tr>
    @if (Model != null)
    {

        foreach (var protoype in Model)
        {


            var totalprice = @protoype.Product.price * @protoype.Count_order;
            <tr>
                <td>
                    @protoype.Product.title
                </td>
                <td>
                    @protoype.Count_order
                </td>
                <td>
                    @totalprice تومان
                </td>
                <td>
                    <a href="@($"/Order/DiscardOrder/{protoype.Product.id}")" )><i class="fa fa-times" aria-hidden="true"></i></a>

                </td>

            </tr>


        }//end foreach
    }

</table>
<div class="row">
    <div class="col">
        <h3>سفارش آنلاین</h3>
        @using (Html.BeginForm("CartPaymentPost", "Order", FormMethod.Post, new { enctype = "multipart/form-data" }))

        {
            @Html.AntiForgeryToken()

            <div class="row">
                <div class="col-md-6">
                    @if (!ViewData.ModelState.IsValid)
                    {
                        @Html.ValidationSummary("", new { @class = "alert alert-warning alert-dismissible fade show" })
                    }
                </div>

            </div>

            <div class="form-group">
                @Html.LabelFor(model => mod.Address, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">

                    @Html.TextAreaFor(model => mod.Address, new { @class = "form-control ", @rows = 5, @cols = 20, @id = "editor1" })


                    @Html.ValidationMessageFor(model => mod.Address, "آدرس الزامی میباشد", new { @class = "text-danger" })

                </div>
            </div>
            <div class="form-group">

                @Html.LabelFor(model => mod.recive_date, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EditorFor(model => mod.recive_date, null, "recive_date", new { htmlAttributes = new { @class = "form-control", @id = "PersianDate" } })
                    @Html.ValidationMessageFor(model => mod.recive_date, "تاریخ معتبر نمیباشد!", new { @class = "field-validation-error " })

                </div>
            </div>

            <div class="form-check">
                @Html.LabelFor(model => mod.OfflineOrder, htmlAttributes: new { @class = "control-label col-md-2" })
                @Html.EditorFor(model => mod.OfflineOrder, null, "OfflineOrder", new { htmlAttributes = new { @class = "form-check-input" } })
                @Html.ValidationMessageFor(model => mod.OfflineOrder, "", new { @class = "field-validation-error " })

            </div>
            <div class="form-row">
                <div class="col col-md-offset-2">
                    <input type="submit" value="پرداخت" class="btn btn-success" />
                    @*<a class="btn btn-default" href="/Order/BookPayment/"> <i class="fas fa-shopping-cart"></i>  سفارش آفلاین </a>*@


                </div>
            </div>

        }
    </div>

</div>

@section Scripts {

    @Scripts.Render("~/bundles/jqueryval")
}

@model-IList
@利用制度全球化;
@使用识别2.模型;
@{
var mod=模型[0];
var dt=DateTime.Now;
PersianCalendar pc=新的PersianCalendar();
var timenow=@pc.pearsianadate(dt);
}
سبد خرید
强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强强弱弱弱弱弱弱弱弱弱弱弱弱弱弱弱弱弱弱弱方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方گ

&时代; نام محصول تعداد سفارش قیمت کل عملیات @如果(型号!=null) { foreach(模型中的var原型) { var totalprice=@prototype.Product.price*@prototype.Count\u订单; @原型产品名称 @prototype.Count\u顺序 @总价 }//端部foreach } سفارش آنلاین @使用(Html.BeginForm(“CartPaymentPost”、“Order”、FormMethod.Post、new{enctype=“multipart/formdata”})) { @Html.AntiForgeryToken() @如果(!ViewData.ModelState.IsValid) { @Html.ValidationSummary(“,new{@class=“alert-warning-dismissible-fade-show”}) } @LabelFor(model=>mod.Address,htmlAttributes:new{@class=“controllabel col-md-2”}) @TextAreaFor(model=>mod.Address,new{@class=“form control”,@rows=5,@cols=20,@id=“editor1”}) @Html.ValidationMessageFor(model=>mod.Address,“آدسازسزد”,新{@class=“text danger”}) @LabelFor(model=>mod.recive_date,htmlAttributes:new{@class=“control label col-md-2”}) @EditorFor(model=>mod.recive_date,null,“recive_date”,new{htmlAttributes=new{@class=“form control”,@id=“PersianDate”}) @Html.ValidationMessageFor(model=>mod.reciveždate,“new{@class=”field validation error“}) @LabelFor(model=>mod.OfflineOrder,htmlAttributes:new{@class=“controllabel col-md-2”}) @EditorFor(model=>mod.OfflineOrder,null,“OfflineOrder”,new{htmlAttributes=new{@class=“form check input”}) @Html.ValidationMessageFor(model=>mod.OfflineOrder,“,new{@class=“field validation error”}) @**@ } @节脚本{ @Scripts.Render(“~/bundles/jqueryval”) }

当我使用表单时,它会导致一个无法将我的字段名称绑定到模型的问题,我无法理解的是,为什么它不能识别地址字段,但其他字段没有问题。

如果您尝试使用此方法,它会起作用

@Html.TextArea("Address",mod.Address, new { @class = "form-control ", @rows = 5, @cols = 20, @id = "editor1" })

您需要使用
Html.TextArea
(或手写)而不是
Html.TextAreaFor

您需要检查control和controlFor之间的差异(见下文)

“最终,它们都生成相同的HTML,但HTML.TextBoxFor()是强类型的,而as HTML.TextBox不是

通常有两件事:

  • 键入的TextBoxFor将为您生成输入名称。这通常只是属性名称,但对于复杂类型的属性,可以包含下划线,如“customer\u name”
  • 使用类型化TextBoxFor版本将允许您使用编译时检查。因此,如果您更改了模型,则可以检查视图中是否存在任何错误。”
  • 请参阅:


    在您看来,您是否包括了该型号?如果是这样,您可以对使用
    asp。或者,您在提交后调用的任何操作都可以使用
    name
    I did@iamaArianme获取地址参数,但它只是没有正确地呈现地址字段,不知道为什么。为什么您编写的是'model=>mod.address'而不是'model=>model.address',它仍然没有正确显示,然后添加到您的htmlattribute“Html.TextAreaFor”(model=>mod.Address,new{class=“form control”,rows=5,cols=20,id=“editor1”,Name=“editor1”})”请注意,在编写时在每个属性中添加“@”,此处的注释部分不允许多个@symbol@Ajay2707mod指模式[0],我知道我也可以使用
    new{@class=“form control”,@rows=5,@cols=20,@id=“editor1”,Name=“reciver\u address”}
    但我想知道problem@AmirKian绑定模型时出现问题。您没有绑定从操作传递的模型,而是绑定了从模型中的操作接收到的列表的第一个元素。第二个原因似乎是您在该字段上使用了一些编辑器,这可能是原因。
    @model IList<identity2.ViewModels.OrderIndexViewModel>
    @using System.Globalization;
    @using identity2.Models;
    @{
                    var mod = Model[0];
                    var dt = DateTime.Now;
                    PersianCalendar pc = new PersianCalendar();
                    var timenow = @pc.PearsianDate(dt);
    }
    
    <h4>سبد خرید</h4>
    <div class="alert alert-warning alert-dismissible fade show" role="alert">
        <strong>توجه!</strong> <p>کلیه محصولات در روز پنج شنبه از ساعت 13 الی  19 به صورت رایگان ارسال میگردد در غیر این صورت هزینه پیک بر عهده مشتری می باشد.</p>
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
    </div>
    <table class="table table-responsive">
        <tr>
            <th>نام محصول</th>
            <th>تعداد سفارش </th>
            <th>قیمت کل</th>
            <th>عملیات</th>
        </tr>
        @if (Model != null)
        {
    
            foreach (var protoype in Model)
            {
    
    
                var totalprice = @protoype.Product.price * @protoype.Count_order;
                <tr>
                    <td>
                        @protoype.Product.title
                    </td>
                    <td>
                        @protoype.Count_order
                    </td>
                    <td>
                        @totalprice تومان
                    </td>
                    <td>
                        <a href="@($"/Order/DiscardOrder/{protoype.Product.id}")" )><i class="fa fa-times" aria-hidden="true"></i></a>
    
                    </td>
    
                </tr>
    
    
            }//end foreach
        }
    
    </table>
    <div class="row">
        <div class="col">
            <h3>سفارش آنلاین</h3>
            @using (Html.BeginForm("CartPaymentPost", "Order", FormMethod.Post, new { enctype = "multipart/form-data" }))
    
            {
                @Html.AntiForgeryToken()
    
                <div class="row">
                    <div class="col-md-6">
                        @if (!ViewData.ModelState.IsValid)
                        {
                            @Html.ValidationSummary("", new { @class = "alert alert-warning alert-dismissible fade show" })
                        }
                    </div>
    
                </div>
    
                <div class="form-group">
                    @Html.LabelFor(model => mod.Address, htmlAttributes: new { @class = "control-label col-md-2" })
                    <div class="col-md-10">
    
                        @Html.TextAreaFor(model => mod.Address, new { @class = "form-control ", @rows = 5, @cols = 20, @id = "editor1" })
    
    
                        @Html.ValidationMessageFor(model => mod.Address, "آدرس الزامی میباشد", new { @class = "text-danger" })
    
                    </div>
                </div>
                <div class="form-group">
    
                    @Html.LabelFor(model => mod.recive_date, htmlAttributes: new { @class = "control-label col-md-2" })
                    <div class="col-md-10">
                        @Html.EditorFor(model => mod.recive_date, null, "recive_date", new { htmlAttributes = new { @class = "form-control", @id = "PersianDate" } })
                        @Html.ValidationMessageFor(model => mod.recive_date, "تاریخ معتبر نمیباشد!", new { @class = "field-validation-error " })
    
                    </div>
                </div>
    
                <div class="form-check">
                    @Html.LabelFor(model => mod.OfflineOrder, htmlAttributes: new { @class = "control-label col-md-2" })
                    @Html.EditorFor(model => mod.OfflineOrder, null, "OfflineOrder", new { htmlAttributes = new { @class = "form-check-input" } })
                    @Html.ValidationMessageFor(model => mod.OfflineOrder, "", new { @class = "field-validation-error " })
    
                </div>
                <div class="form-row">
                    <div class="col col-md-offset-2">
                        <input type="submit" value="پرداخت" class="btn btn-success" />
                        @*<a class="btn btn-default" href="/Order/BookPayment/"> <i class="fas fa-shopping-cart"></i>  سفارش آفلاین </a>*@
    
    
                    </div>
                </div>
    
            }
        </div>
    
    </div>
    
    @section Scripts {
    
        @Scripts.Render("~/bundles/jqueryval")
    }
    
    
    @Html.TextArea("Address",mod.Address, new { @class = "form-control ", @rows = 5, @cols = 20, @id = "editor1" })