加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – T4MVC:如何使用说Url.Action?

发布时间:2020-12-16 09:55:05 所属栏目:asp.Net 来源:网络整理
导读:我们可以编写T4MVC文档提示 @Url.Action(MVC.Dinners.Delete(Model.DinnerID)) 代表老式和字符串硬编码 @Url.Action("Delete","Dinners",...)) (见附图) 也许我真的错过了一些东西,但第一个版本实际上会调用控制器的动作方法,显然不是目标有副作用.我已经使
我们可以编写T4MVC文档提示

@Url.Action(MVC.Dinners.Delete(Model.DinnerID))

代表老式和字符串硬编码

@Url.Action("Delete","Dinners",...))

(见附图)

也许我真的错过了一些东西,但第一个版本实际上会调用控制器的动作方法,显然不是目标有副作用.我已经使用resharper静态跟踪方法调用,并且还调试了:实际上调用了该方法,其中(再次)不是目标.

Url.Action确实具有接受ActionResult的重载,这就是为什么T4MVC版本不会导致编译错误的原因.如果可以在没有副作用的情况下调用操作方法,则正确呈现的URL也是如此.

我的目标是在视图中渲染动作URL,换句话说,我真的在寻找@ Url.Action(“删除”,“晚餐”,……)的替代方案.

这是我发现的:

@Url.Action(MVC.Dinner.ActionNames.Delete,MVC.Dinner.Name)

我错过了什么? (为什么我们会调用实际的动作方法,只是为了渲染它的url?)

解决方法

那是致命的.我在问题中所描述的一切都是真的,仍然是虚假警报.

我的action方法的返回值是string.请不要问为什么,它是完全合法的,逻辑上该方法是无效的(从javascript调用POST,并忽略响应)

该字符串返回值欺骗了T4MVC生成器,因此该方法实际上是由@ Url.Action调用的(MVC.Dinners.Delete(Model.DinnerID))

将方法的返回值更改为ActionResult(并且不执行任何其他操作)后,T4MVC生成的代码将更改,并且不再调用操作方法

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读