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

C# .NET模型项显示在输入框中,但不显示在链接中,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我想生成一个Url,如下所示: @Html.HiddenFor(m=>m.Id) @Html.TextBoxFor(x=>x.Id) @{ var cancel = Url.Action("Index", "KeySetting", new { area = "Document"})+"&Id="+@Model.Id; } <a href="@Url.Action("Index", "KeySetting", new { Area = "Document" })?id

我想生成一个Url,如下所示:

@Html.HiddenFor(m=>m.Id)
@Html.TextBoxFor(x=>x.Id)
@{ var cancel = Url.Action("Index", "KeySetting", new { area = "Document"})+"&Id="+@Model.Id; }
<a href="@Url.Action("Index", "KeySetting", new { Area = "Document" })?id=@Model.Id" class="btn btn-outline-secondary">Edit</a>
但是,当我加载页面时,我的
文本框
不是空的,但是我的
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?}");

        });

您确定要在顶部定义视图模型吗?有时候我忘了

@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=yourmodelid

试着这样做:

@Html.HiddenFor(m=>m.Id)
@Html.TextBoxFor(x=>x.Id)
@{ var cancel = Url.Action("Index", "KeySetting", new { area = "Document"})+"&Id="+@Model.Id; }
<a href="@Url.Action("Index", "KeySetting", new { Area = "Document" })?id=@Model.Id" class="btn btn-outline-secondary">Edit</a>

不知道为什么这不起作用,但这是我能想到的最好办法。虽然不漂亮,但现在还可以用。如果有人有更好的主意,我会把勾号改给他们

这就是我所做的:

<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>

$(文档).ready(函数(e){
var link=$(“#@Html.IdFor(x=>x.Id)”).val();
$(“#取消”).attr(“href”),“@Url.Action(“Index”,“KeySetting”,new{area=“Document”})?Id=“+link);
})

可能您没有看到它,因为您正在URL末尾查找Id,但它实际上正好出现在操作名称之后(因为MVC route config中的默认约定):
Id正好出现在索引之后/此时我的URL看起来是这样的:href=“/Document/KeySetting&Id=”控制器的名称是什么?文档或密钥设置?您还可以显示您的RouteConfig设置吗?对不起,url应该是/Document/KeySettings/Index?Id=我添加了我的路由设置。我的模型是在顶部定义的。然而,它仍然没有显示。看起来输入框很好,那么你能把问题标记为关闭吗。幸好你检查了模型。快乐编码!对不起,我知道是什么问题。我的控制器输出了错误的项目。难怪我的Id是空的。