.NET模型项显示在“输入”框中,但未显示在链接中

时间:2020-02-18 06:21:06

标签: c# asp.net asp.net-mvc

我有一个要生成的网址,如下所示:

@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?}");

        });

2 个答案:

答案 0 :(得分:0)

您确定要先定义视图模型吗?有时候我忘记了。

@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

尝试这样的事情:

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

答案 1 :(得分:0)

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

这就是我所做的:

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