繁体   English   中英

如何将模型字段传递给视图中的Javascript函数?

[英]How to pass a model field to a Javascript function in a view?

我有一个简单的问题,今晚让我感到烦恼......我有一个ASP.NET MVC4 + Razor应用程序。 当用户单击单选按钮时,我想将模型中的字段“Timezone”中的字符串值传递给onclick处理程序,这是一个javascript函数。 在javascript函数中,我将接受字符串并做一些工作,但是现在,我只是弹出一个alert()。 我找到了很多关于必须进行特殊引用的引用,并且我已经尝试了所有这些,但无论我做什么,警报都没有显示任何内容,但是带有单选按钮的表单显示了我的有效值时区文本框。

我真的很感谢你的帮助,弄清楚我做错了什么......如果这不可能(为什么?),那么我可以从javascript函数访问模型的值吗? 我试过@ model.Timezone,但总是有一个空字符串。 当我知道它一定是非常简单的东西时真的很烦人! 无论如何,这里是单选按钮和简单的javascript函数的代码。 我真的很感谢你的帮助!

谢谢,迈克

    @Html.RadioButtonFor(model => model.TimezoneSource, "C",
        new {propertyName = "UpdateTimezoneRadioButton", 
            onClick = "TimezoneClicked(@model.Timezone)" })Update Timezone

function TimezoneClicked(timezone) {
    alert(timezone);
}

你不应该这样做

  onClick = "TimezoneClicked(@model.Timezone)" 

当你在html帮助函数中使用它时,它被视为普通字符串。 相反,你应该做以下事情:

onClick = "TimezoneClicked('" + Model.Timezone + "')"

这会将对象中的Timzone值传递给函数。 如果它仍然是空的,请尝试将其打印出来,如下所示,以确保该属性不为空。

<span> @Model.Timezone </span>

您可以尝试以下代码:

@Html.RadioButtonFor(model => model.TimezoneSource, "C",
    new {propertyName = "UpdateTimezoneRadioButton", 
        onClick = "TimezoneClicked('" + Model.Timezone + "')" })Update Timezone

function TimezoneClicked(timezone) {
alert(timezone);
}

如果你需要获得函数中的任何dom元素,你可以这样做:

 document.getElementById('@Html.IdFor(model => model.Draw)') 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM