Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在彼此之间使用Razor和javascript_Javascript_Asp.net Mvc_Razor - Fatal编程技术网

在彼此之间使用Razor和javascript

在彼此之间使用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

我想在Razor中使用如下javascript变量:

我的html:

@{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在以后基于某个索引值远程获取适当的数据。好的,但是您可以帮助我编写一些代码吗?或者介绍网站?