Eri*_*ica 7 html-helper asp.net-mvc-3
我有一个多步骤的设置过程,我想传递附加到URL的查询字符串参数,只要它们是相关的.
HTTP://本地主机:6618 /帐号/配置文件向导=真猫=狗
@using( Html.BeginForm() )
工作得很好.它产生了:<form action="/Account/Profile?setup=true&cats=dogs" method="post">即它将任何原始查询字符串参数传递给POST操作,然后在该Controller操作中,我可以通过添加到RouteValues和a来选择哪些相关的传递到我的下一步,或者必须添加RedirectToResult.
但是,我需要为表单指定一个类来进行样式设置.
我试过了:
@using( Html.BeginForm( "Profile", "Account", args, FormMethod.Post, new { @class = "mainForm" } ) )
产量:
<form action="/Account/Profile?Count=1&Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.Object%5D&Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.Object%5D" class="mainForm" method="post">
(args由过滤器生成,是RouteValueDictionary).规范http://msdn.microsoft.com/en-us/library/dd505151.aspx表明您可以使用System.Web.Routing.RouteValueDictionary传递参数.
我想要的是 <form action="/Account/Profile?setup=true&cats=dogs" class="mainForm" method="post">
我应该提一下,我宁愿不做一些像传入这样的事情new {key = value},因为有相当多的逻辑来确定我将传递给下一步的内容.
关于该做什么的任何建议?
我被这个看似简单的任务所困扰,我肯定错过了一些非常明显的东西.
Dar*_*rov 11
args由过滤器生成,是RouteValueDictionary
这是关键点.在这种情况下,请确保使用BeginForm方法的正确重载:
@using(Html.BeginForm(
"Profile",
"Account",
args,
FormMethod.Post,
new RouteValueDictionary(new { @class = "mainForm" })
))
{
...
}
Run Code Online (Sandbox Code Playgroud)
注意最后一个参数?它必须是一个IDictionary<string, object>工作.
在你的例子中,这个重载是被拾取的.但是,由于您传递的RouteValueDictionary是routeValues参数而不是匿名对象,因此它会搞砸.
因此,您应该将routeValues和htmlAttributes都作为字典或两者作为匿名对象.
| 归档时间: |
|
| 查看次数: |
29709 次 |
| 最近记录: |