Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 使用复合模型在MVC上绑定到回发时的简单模型失败_Asp.net_Vb.net_Asp.net Mvc 4_Data Binding - Fatal编程技术网

Asp.net 使用复合模型在MVC上绑定到回发时的简单模型失败

Asp.net 使用复合模型在MVC上绑定到回发时的简单模型失败,asp.net,vb.net,asp.net-mvc-4,data-binding,Asp.net,Vb.net,Asp.net Mvc 4,Data Binding,我在MVC应用程序中有一个视图,它接收由其他类组成的模型,以显示我想要的所有数据。这很有效,但在回发时,我只想返回在任务特定的更简单类中完成操作所需的值 视图模型示例: Public Class ManageEmployeeViewData Inherits BaseViewData Public Property Id As Integer Public Property CompanyId As Integer Public Property NewTax

我在MVC应用程序中有一个视图,它接收由其他类组成的模型,以显示我想要的所有数据。这很有效,但在回发时,我只想返回在任务特定的更简单类中完成操作所需的值

视图模型示例:

Public Class ManageEmployeeViewData
    Inherits BaseViewData


    Public Property Id As Integer
    Public Property CompanyId As Integer
    Public Property NewTaxCode As ManageTaxCodeUpdateModel
End Class

Public Class ManageTaxCodeUpdateModel

    Public EmployeeID As Integer
    Public TaxCode As String
    Public EffectiveDate As Date
End Class
视图示例:

<form action="@Url.Action("UpdateTaxCode")" method="post">
    @Html.HiddenFor(Function(f) f.NewTaxCode.EmployeeID)
    @Html.EditorRowFor(Function(f) f.NewTaxCode.TaxCode)
    @Html.EditorFor(Function(f) f.NewTaxCode.EffectiveDate)
    <button type="submit" class=" btn save"><span class="icon"></span>Save</button>
</form>
回发的控制器操作:

<HttpPost()>
Function UpdateTaxCode(<Bind(Prefix:="NewTaxCode")> ByVal model As ManageTaxCodeUpdateModel) As ActionResult
    Dim empSvc = ObjectFactory.GetInstance(Of IEmployeeService)()
    Dim employee = empSvc.GetEmployee(model.EmployeeID)
    Return (RedirectToAction("Edit", New With {.Id = model.EmployeeID}))
End Function
输出html的示例:

<form action="/inni/Company/2220/ManageEmployees/UpdateTaxCode" method="post" novalidate="novalidate">

    <input data-val="true" data-val-number="The field Int32 must be a number." data-val-required="The Int32 field is required." id="NewTaxCode_EmployeeID" name="NewTaxCode.EmployeeID" type="hidden" value="6339">

    <input class="text-box single-line valid" data-val="true" data-val-date="The field DateTime must be a date." data-val-required="The DateTime field is required." id="NewTaxCode_EffectiveDate" name="NewTaxCode.EffectiveDate" type="datetime" value="01/01/0001 00:00:00">

    <input class="text-box single-line" id="NewTaxCode_TaxCode" name="NewTaxCode.TaxCode" type="text" value=""><span class="field-validation-valid" data-valmsg-for="NewTaxCode.TaxCode" data-valmsg-replace="true">


    <button type="submit" class=" btn save"><span class="icon"></span>Save</button>

</form>

但是没有一个值绑定到ManageTaxCodeUpdateModel模型。你知道我哪里出错了吗?

你可以在你的post方法中使用[BindPrefix=NewTaxCode]属性,它看起来应该可以工作,但仍然没有乐趣。我更新了我的示例以反映您建议的更改Check you html我不太擅长VB,我不知道ByVal NewTaxCode是什么。如果您有名为NewTaxCode.EffectiveDate的控件,其中EffectiveDate是ManageTaxCodeUpdateModel中属性的名称,那么这应该可以工作。[BindPrefix=NewTaxCode]所做的是去掉前缀,这样,它就不会尝试绑定不存在的NewTaxCode.EffectiveDate,而是绑定到存在的EffectiveDate。因此,一个问题可能是ByVal NewTaxCode。在c语言中,它将是公共操作结果UpdateAscodeManageTaxCodeUpdateModel模型。如果您将模型更改为NewTaxCode,它将不起作用参数的名称不能与模型的名称相同propertyYeah我通常是c,但继承了此VB项目: