在彼此之间使用Razor和javascript
我想在Razor中使用如下javascript变量: 我的html:在彼此之间使用Razor和javascript,javascript,asp.net-mvc,razor,Javascript,Asp.net Mvc,Razor,我想在Razor中使用如下javascript变量: 我的html: @{List<AddTempViewModel> tempsToView = new List<AddTempViewModel>(); tempsToView = (List<AddTempViewModel>)ViewData["tempsToView"];} @if (tempsToView != null) { @foreach (var item in tempsTo
@{List<AddTempViewModel> tempsToView = new List<AddTempViewModel>();
tempsToView = (List<AddTempViewModel>)ViewData["tempsToView"];}
@if (tempsToView != null)
{
@foreach (var item in tempsToView)
{
<a class="click" id="@item.TempDocumentId">
<img id="leftSideBarElement" src="@item.TempDocumentAddressUrl" />
</a><br />
}
<form method="post" action="">
<input id="documentNumber" class="form-control" type="text" name=""
placeholder="Email" />
</form>
@{List tempsToView=new List();
tempsToView=(列表)视图数据[“tempsToView”];}
@if(tempsToView!=null)
{
@foreach(tempsToView中的var项)
{
}
还有我的剧本:
<script>
$(document).ready(function () {
$(".click").click(function () {
var divID = $(this).attr('id');
alert(divID);
var docName = @tempsToView[divID].TempDocumentId
$("#documentNumber").val(docName);
});
});
</script>
$(文档).ready(函数(){
$(“.click”)。单击(函数(){
var divID=$(this.attr('id');
警报(divID);
var docName=@tempsToView[divID].TempDocumentId
$(“#文件编号”).val(文件名);
});
});
但是我不能用divID设置@tempsToView的索引。
除了这个,请帮我做什么。
谢谢。您不能基于JavaScript中发生的事情设置Razor变量。Razor运行服务器端,而JavaScript运行客户端,毕竟Razor已经运行。您不能基于JavaScript中发生的事情设置Razor变量。Razor运行服务器端,而JavaScript运行客户端,之后所有剃须刀都已运行。
<script>
$(document).ready(function () {
var divID = $(this).attr('id');
alert(divID);
var documentName = $(@Html.Raw(JsonConvert.SerializeObject(tempsToView )))[divID];
console.log(documentName);
});
</script>
$(文档).ready(函数(){
var divID=$(this.attr('id');
警报(divID);
var documentName=$(@Html.Raw(JsonConvert.SerializeObject(tempsToView)))[divID];
console.log(documentName);
});
$(文档).ready(函数(){
var divID=$(this.attr('id');
警报(divID);
var documentName=$(@Html.Raw(JsonConvert.SerializeObject(tempsToView)))[divID];
console.log(documentName);
});
你需要什么还不是很清楚,但如果我没弄错的话……我曾经把Razor和Js混合在一起,但从长远来看,我意识到两件事:
- 它看起来很难看
- 如果将js代码移动到单独的.js文件中,它将不会运行,因为 Razor引擎不处理JS文件
@foreach (var item in tempsToView)
{
<a class="click" id="@item.TempDocumentId"
data-document-name="@item.TempDocumentName"
data-document-isbn="@item.TempDocumentIsbn">
<img id="leftSideBarElement" src="@item.TempDocumentAddressUrl" />
</a><br />
}
通过这种方式,所有HTML/Razor和JS都是独立的,并且仍然可以正常工作,一个干净的代码,每个元素都是自给自足的。你需要什么并不清楚,但如果我没弄错的话……我曾经将Razor和JS混合在一起,但从长远来看,我意识到两件事:
- 它看起来很难看
- 如果将js代码移动到单独的.js文件中,它将不会运行,因为 Razor引擎不处理JS文件
@foreach (var item in tempsToView)
{
<a class="click" id="@item.TempDocumentId"
data-document-name="@item.TempDocumentName"
data-document-isbn="@item.TempDocumentIsbn">
<img id="leftSideBarElement" src="@item.TempDocumentAddressUrl" />
</a><br />
}
这样一来,所有HTML/Razor和JS都是独立的,并且仍然可以正常工作,一个干净的代码,每个元素都是自给自足的。您可以将其余的相关元素发布到视图代码中吗?您是否正在尝试将
documentNumber
的值设置为@tempsToView[].TempDocumentId
property?如果是,为什么不指定数组的索引?因为它是在编译后生成的。我想动态设置该列表的索引。您可以对razor模型或特定属性进行JSON编码。这里有一个相关的问题:您能否将其余的相关属性发布到视图代码中?是否尝试设置documentNumber
到您的@tempsToView[].TempDocumentId
属性?如果是,为什么不指定数组的索引?因为它是在编译后生成的。我想动态设置该列表的索引。您可以用JSON编码razor模型或特定属性。这里有一个相关的问题:那么除了此之外,您建议我做什么?除了c之外,您什么也做不了改变你的代码以不同的方式解决问题。你没有给出你在这里实际想要实现的任何细节,但是基本上,如果你需要在JavaScript运行时访问@tempsToView
后面的数据,你需要设置一些JavaScript变量来保存代码中的数据,或者使用AJAX来保存这些数据事后检索它。实际上,我在控制器中填充了一个列表并将其发送到其视图。单击时,我有一个我想要的标记,将一些值设置到输入标记中。除此之外,我应该怎么做?同样,您需要将tempsToView
的内容转储到一个JavaScript变量中,以便以后可以引用,或者使用AJAX将其转换为fetc在以后的某个时间点,根据某个索引值远程获取适当的数据。好的,但是你能帮我编写一些代码吗?或者介绍一个网站吗?那么,除了这个之外,你建议我做什么呢?除了更改代码以不同的方式处理问题之外,你什么也做不了。你还没有给出任何关于你真正想要实现的目标的细节这里有,但基本上,如果您需要在JavaScript运行时访问@tempsToView
后面的数据,您需要设置一些JavaScript变量,以便在代码的早期保存该数据,或者在事后使用AJAX检索该数据。实际上,我在控制器中填充了一个列表,并将其发送到其视图。我有一个标记,当它被保存时,我需要它单击将一些值设置到输入标记中。除此之外,我应该怎么做?同样,您需要将tempsToView
的内容转储到一个JavaScript变量中,以便以后可以引用,或者使用AJAX在以后基于某个索引值远程获取适当的数据。好的,但是您可以帮助我编写一些代码吗?或者介绍网站?