.NET模型项显示在"输入"框中,但不显示在链接中



我有一个Url,我想像这样生成:

@Html.HiddenFor(m=>m.Id)
@Html.TextBoxFor(x=>x.Id)
@{ var cancel = Url.Action("Index", "KeySetting", new { area = "Document"})+"&Id="+@Model.Id; }

但是,当我加载页面时,我的TextBox不是空的,但我的url.action缺少Model.Id值。

我也试过这个:

@Html.ActionLink("Cancel", "Index", "KeySetting", new { area = "Document", Id = @Model.Id }, new { @class = "btn btn-outline-secondary" })

但我的Id没有出现得那么好。为什么?

编辑:路线设置

app.UseMvc(routes =>
{
routes.MapRoute(
name: "areas",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});

不知道为什么这不起作用,但这是我能想到的最好的。它不漂亮,但目前有效。如果有人有更好的主意,我会把勾号改为他们。

这就是我所做的:

<script>
$(document).ready(function (e) {
var link = $("#@Html.IdFor(x=>x.Id)").val();
$("#cancel").attr("href", "@Url.Action("Index", "KeySetting", new { area = "Document" })?Id=" + link);
})
</script>
<a class="btn btn-outline-secondary" id="cancel" href="#">Cancel</a>

您确定在顶部定义视图模型了吗?有时我会忘记这一点。

@model YourViewModelName

此外,如果你想把你的id作为路由值,也许可以试试这个:

@Html.ActionLink(
linkText: "Edit",
actionName: "Index",
controllerName: "KeySetting",
routeValues: new { area = "Document", id = @Model.Id },
htmlAttributes: new { @class = "btn btn-outline-secondary" })

如果您想要一个查询字符串参数,如?queryparam=您的模型ID

试试这样的东西:

<a href="@Url.Action("Index", "KeySetting", new { Area = "Document" })?id=@Model.Id" class="btn btn-outline-secondary">Edit</a>

最新更新