@Url.Action向控制器方法传参失败,参数始终为null
解决@Url.Action传递参数为null的问题
以下是几个可能导致参数为null的原因及解决办法:
先确认Model是否有值
先在页面上直接输出@Model.name(比如加一行<p>当前name值:@Model.name</p>),刷新页面看有没有实际内容。如果这里就是null,那传递给控制器的自然也是null,得先排查Model赋值的逻辑。修复引号嵌套的问题
你当前按钮的onclick属性里用了双引号嵌套,容易导致渲染错误。可以把onclick的外层引号换成单引号,内层保持双引号:<input type="button" value="Submit" onclick='location.href="@Url.Action("NewName", "Home", new { name = Model.name})"' />或者更稳妥的方式,用
Html.ActionLink生成按钮样式的链接,避免手动拼接onclick:@Html.ActionLink("Submit", "NewName", "Home", new { name = Model.name }, new { @class = "button" })之后可以用CSS把这个链接改成按钮样式。
检查参数名和路由配置
- 确保控制器方法的参数名(
string name)和Url.Action里的参数名(new { name = Model.name})完全一致,C#是大小写敏感的,别出现大小写不匹配的情况。 - 查看路由配置(
RouteConfig.cs),如果默认路由没有包含name参数,Url.Action会把它作为QueryString传递(比如/Home/NewName?name=xxx),这种情况控制器是能接收的,但如果路由有特殊约束,可能需要调整路由规则,或者确保参数传递方式符合路由要求。
- 确保控制器方法的参数名(
检查Model属性名的拼写
确认你的Model类里的属性是不是name(小写),C#里属性通常用帕斯卡命名法(比如public string Name { get; set; }),如果是这种情况,页面里应该用Model.Name来取值,拼写错误会导致取到null。
内容的提问来源于stack exchange,提问作者user616076
相关产品推荐
相关产品推荐

