[英]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.