簡體   English   中英

在@ block razor中使用jquery變量

[英]use jquery variable in @ block razor

我在cshtml頁面內使用jquery腳本苦苦掙扎。 簡而言之,我的問題是如何在cshtml頁面的@語句內使用var?

下面是我正在嘗試的示例:

<select id="DefaultText">
    <option value="-1">-- select --</option>
    @foreach( var d in Model.DefaultTexts )
    {
        <option value="@d.Id" >@d.Name</option>
    }
</select>


<script type="text/javascript">
    $('#DefaultText').change(function () {

        var id = parseInt($('#DefaultText :selected').val());
        var text = @Model.DefaultTexts.First( t => t.Id == id );

        $('#CustomProductText').val(text);
    });
</script>

我無法找到var ID。 超出范圍。 我也嘗試過使用for循環和if語句。 但是在if語句中,我得到了相同的錯誤:超出范圍。

全文如下:在我的頁面上,我有一個下拉列表。 選擇的項目是默認文本部分的簡稱。 基於ID或名稱,我想在文本框中顯示默認文本部分。

#CustomProductText是應在其中放置內容的文本框(代碼未發布)。

我也嘗試了@:和statement,但是沒有用。

我在做錯什么,或者甚至是我嘗試做的不可能。

作為替代方案,我向控制器添加了一個操作,以使文本表單在那里。 代碼下方:

<script type="text/javascript">
    $('#DefaultText').change(function () {

        var id = parseInt($('#DefaultText :selected').val());
        $.post("Categories/GetDefaultText", { Id: id }, function (data) {
            alert(data);
        });


        //$('#CustomProductText').val(text);
    });
</script>

控制器代碼:

    [HttpPost]
    public ActionResult GetDefaultText(int id)
    {
        using( var context = new MyContext() )
        {
            var text = context.DefaultText.First( d => d.Id == id ).Text;
            return this.Content( text );
        }
    }

這行不通。 在調試模式下不會執行該操作。

問候,

丹尼爾

$.post對您不起作用,您應在URL前面加上/符號,然后將其按預期方式命中:

$.post("/Categories/GetDefaultText", { Id: id }, function (data) {
    alert(data);
});

至於剃須刀解決方案,您不能在剃須刀代碼中使用javascript變量,因為它不是腳本語言。 razor所做的只是簡單地將字符串(無論是html還是javascript或其他內容)呈現到頁面中。

要執行您想要的操作,您需要請求服務器將文本傳遞到您的頁面,或者呈現頁面中擁有的所有文本,然后在javascript中訪問呈現的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM