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