【问题标题】:ASP.net MVC5 Razor - set value Html.IdForASP.net MVC5 Razor - 设置值 Html.IdFor
【发布时间】:2017-09-22 07:21:28
【问题描述】:

在 ASP.net MVC5 视图中,我想检查用户是否已登录,以便我可以将用户名分配给控件,或者如果他未登录,则只分配“Guest”。

问题是我无法设置值,因为我总是遇到错误 - “错误 CS1061 'MvcHtmlString' 不包含 'val' 的定义并且没有扩展方法 'val' 接受第一个参数可以找到类型“MvcHtmlString”(您是否缺少 using 指令或程序集引用?)”

脚本如下。

如何正确访问控件,设置值或将其设置为只读?

提前致谢!

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")

    <script type="text/javascript">
        $(document).ready(function () {
            @{var usr = System.Web.HttpContext.Current.User.Identity.Name;
                if (@User.Identity.Name != "")
                {
                    usr = User.Identity.Name;
                }
                else
                {
                    usr = "Guest";
                }
            }

            @Html.IdFor(model => model.UserCri).val(usr);
            @Html.IdFor(model => model.UserCri).attr("readonly", "readonly");
    </script>
}

【问题讨论】:

  • @Html.IdFor 不会生成表单控件(它只是输出一个值,该值将用于根据属性名称生成id 属性 - 在您的情况下为UserCri
  • 不清楚你想做什么,但你不需要脚本——你可以做@if (User.Identity.Name != "") { &lt;div&gt;@User.Identity.Name&lt;div&gt; } else { &lt;div&gt;Guest&lt;/div&gt; }
  • 您好斯蒂芬,感谢您的帮助。 Win下面的回复正是我想要的!谢谢!
  • 您到底为什么要为此使用javascript! (无论如何用户名都不应该在表单控件中)

标签: asp.net-mvc razor


【解决方案1】:

您需要将 Html Helper 与 jQuery 代码混合使用。

<script type="text/javascript">
    $(function(){
        var usr = '@(User.Identity.IsAuthenticated ? User.Identity.Name : "Guest")';
        $('#@Html.IdFor(model => model.UserCri)').val(usr);
    });
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    相关资源
    最近更新 更多