C# 如何仅在绑定中将属性重命名为其他名称?

C# 如何仅在绑定中将属性重命名为其他名称?,c#,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,我的页面使用两种模型。一个用于主页呈现,另一个用于部分搜索功能 使用Ajax检索搜索视图模型。模型如下: public class SearchViewModel { public int Id { get; set; } public string Name { get; set; } } 但是我的Razor视图使用不同的模型(用于主页呈现): 我关心的是,当通过保存SearchViewModel.Id的隐藏字段所在的表单发布数据时,是否会传递正确的Id值 @using (H

我的页面使用两种模型。一个用于主页呈现,另一个用于部分搜索功能

使用Ajax检索搜索视图模型。模型如下:

public class SearchViewModel
{
    public int Id { get; set; }
    public string Name { get; set; }
}
但是我的Razor视图使用不同的模型(用于主页呈现):

我关心的是,当通过保存
SearchViewModel.Id
的隐藏字段所在的表单发布数据时,是否会传递正确的
Id

@using (Html.BeginForm("Action", "Controller"))
{
    @(Html.HiddenFor<SearchViewModel, Int32>(m => m.Id))
}
或者,我可以使用SearchViewModel中的属性绑定到其他id吗

我看了下面的链接,但它没有解决我的问题。此外,我找到的所有引用都将我重定向到一个自定义模型绑定器,我不想实现它(因为在
SearchViewModel
中更改属性
Id
的名称会更容易)

参考资料:


如何发布错误的Id?除非您使用的是一个同时包含两个值的表单。。。但是这才是真正的问题。你是对的,@ErikPhilips,但是我在jQuery搜索单个元素时仍然会遇到问题,这样:
$(“#Id”)
,对吗?在我的示例中,我有两个元素
,这似乎有一个潜在的设计/架构缺陷,您正试图解决这个缺陷。你能告诉代码你是如何将这两个模型传递到页面的吗?控制器中的动作签名是什么?
@using (Html.BeginForm("Action", "Controller"))
{
    @(Html.HiddenFor<SearchViewModel, Int32>(m => m.Id))
}
<input type="hidden" id="SearchViewModel.Id" />