html图片传给控制器,razor – 从@ Html.ActionLink MVC 4传递参数到控制器

您正在使用错误的

Html.ActionLink助手的过载。你认为routeValues实际上是htmlAttributes!只要看看生成的HTML,你会看到这个锚的href属性看起来不像你期望它看起来。

这里是你使用:

@Html.ActionLink(

"Reply", // linkText

"BlogReplyCommentAdd", // actionName

"Blog", // routeValues

new { // htmlAttributes

blogPostId = blogPostId,

replyblogPostmodel = Model,

captchaValid = Model.AddNewComment.DisplayCaptcha

}

)

这里是你应该使用:

@Html.ActionLink(

"Reply", // linkText

"BlogReplyCommentAdd", // actionName

"Blog", // controllerName

new { // routeValues

blogPostId = blogPostId,

replyblogPostmodel = Model,

captchaValid = Model.AddNewComment.DisplayCaptcha

},

null // htmlAttributes

)

还有另一个非常严重的问题,你的代码。以下routeValue:

replyblogPostmodel = Model

你不能在ActionLink中传递这样的复杂对象。所以摆脱它,并从你的控制器动作中删除BlogPostModel参数。您应该使用blogPostId参数从此模型持久化的位置检索模型,或者如果您喜欢从GET操作中检索模型的位置:

public ActionResult BlogReplyCommentAdd(int blogPostId, bool captchaValid)

{

BlogPostModel model = repository.Get(blogPostId);

...

}

至于你的初始问题是关于错误的重载,我建议你使用命名参数编写你的助手:

@Html.ActionLink(

linkText: "Reply",

actionName: "BlogReplyCommentAdd",

controllerName: "Blog",

routeValues: new {

blogPostId = blogPostId,

captchaValid = Model.AddNewComment.DisplayCaptcha

},

htmlAttributes: null

)

现在,不仅你的代码更加可读,但你永远不会混淆在微软为这些帮助重载的gazillions。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值