chi*_*ef7 16 asp.net-mvc webforms
我知道,我知道,我知道.我不应该在MVC中做webforms,我完全同意.但是,签署我的薪水的人不会批准我们的网站现在完全转换为MVC.因此,我逐页采取增量步骤,在MVC中添加新功能时将其转换.
所以我的问题是如何从控制器访问IsPostBack属性?
编辑: 为了进一步澄清,我在我的mvc母版页面上有一个webform用户控件,可以启动回发.我试图通过mvc帖子识别这些回发.在这一点上,我想我只是检查请求表单键的"__viewstate"键,如果它被发现将其视为回发.
小智 44
如果有人仍然感兴趣,你可以在MVC Action Method中测试一个POST,如下所示:
if (Request.HttpMethod=="POST") {
}
Run Code Online (Sandbox Code Playgroud)
tva*_*son 13
没有IsPostBack - 一切都是POST或GET(或其他HTTP动词).您可以限制操作允许的HTTP谓词,即,您永远不会使用AcceptVerbsAttribute从不允许的动词中看到请求.例如,以下内容仅允许POST.
[AcceptVerbs( HttpVerbs.Post )]
[ValidateAntiForgeryToken]
public ActionResult Update( int id )
{
}
Run Code Online (Sandbox Code Playgroud)
如果您需要具有相同的操作名称同时执行GET/POST并且它们实际上执行不同的操作,您可以为它们分别签名或使用ActionNameAttribute为其中一个操作设置别名,以便方法可以具有不同的名称.
[AcceptVerbs( HttpVerbs.Get)]
public ActionResult List()
{
}
[AcceptVerbs( HttpVerbs.Post )]
[ValidateAntiForgeryToken]
public ActionResult List( string filter, int page, int limit )
{
}
Run Code Online (Sandbox Code Playgroud)
要么
[ActionName( "List" )]
[AcceptVerbs( HttpVerbs.Get)]
public ActionResult ListDisplay()
{
}
[AcceptVerbs( HttpVerbs.Post )]
[ValidateAntiForgeryToken]
public ActionResult List()
{
}
Run Code Online (Sandbox Code Playgroud)
编辑:请注意,我已将防伪令牌验证添加到POST操作中.您真的应该使用它来防止跨站点脚本攻击.
小智 10
你可以在Razor中使用这段代码
@if(IsPost)
{
//dosomething
}
else
{
//do some other thing
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56049 次 |
| 最近记录: |