我正在ASP.NET MVC 2中创建一个强类型的搜索表单,通过FormMethod.Get发布到结果页面(即表单输入及其值发布到搜索结果查询字符串)。我如何指定使用模型的嵌套类而不是模型本身的强类型html助手,这样我就不会在查询字符串中获得输入名称的点符号?如何指定使用模型的嵌套类而不是模型本身的强类型html助手?
我的强类型的视图模型类的样子:
public class SearchViewModel
{
public SearchQuery SearchQuery { get; set; }
public IEnumerable<SelectListItem> StateOptions { get; set; }
...
}
的SEARCHQUERY类的样子:这样做
public class SearchQuery
{
public string Name { get; set; }
public string State { get; set; }
...
}
这样的:
<%= Html.TextBoxFor(m => m.SearchQuery.Name)%>
会产生与名称的输入SearchQuery.Name
,当将查询字符串放入&SearchQuery.Name=blah
时表单已发布。相反,我更喜欢&Name=blah
,因为只有SearchQuery属性将具有关联的表单元素。
我假设我必须做的Html.TextBoxFor
LINQ表达式的东西,但我似乎无法得到正确的语法..
感谢您的帮助!解决此
不确定我遵循 - 我刚刚向您展示的功能与您已经在做的功能相同,MVC将不会添加SearchQuery前缀。也就是说,在视图中,m.Name和m.SearchQuery.Name是相同的,第一个只是第二个“快捷方式”。 – automagic 2010-09-07 18:06:02
对不起,我没有仔细查看你的答案。问题是我必须在视图模型上创建一组重复的属性,以反映SearchQuery属性。如果我可以避免这样做,这将是更可取的。 – user441685 2010-09-07 18:22:10
note ..我删除了我的第一条评论,因为它不相关。 – user441685 2010-09-07 18:32:13