javascript - 将模型从剃刀传递到 javascript - 非常奇怪的错误
问题描述
我试图将 HTML 表格行中的选定模型直接传递给 javascript 函数,包括转换为 JSON。由于以下问题,转换失败。
此外,我吓坏了 6 个多小时,试图了解它为什么不起作用。现在我知道是什么导致了问题,不知道如何解决它。这是我尝试过的(简单易行):
<table class="table table-hover">
<thead align="center">
<tr>
<th scope="col">AssetID</th>
<th scope="col">Loaction</th>
<th scope="col">AreaIn</th>
<th scope="col">Rooms</th>
<th scope="col">ImageURL</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody align="center">
@foreach (var a in @Model.OwnAssetsList)
{
String[] assetArray = new String[8] { a.AssetID.ToString(), a.OwnerID.ToString(), a.OwnerPublicKey.ToString(), a.Loaction.ToString(), a.AreaIn.ToString(), a.Rooms.ToString(), a.ImageURL.ToString(), a.Price.ToString() };
<tr>
<td>@a.AssetID</td>
<td>@a.Loaction</td>
<td>@a.AreaIn</td>
<td>@a.Rooms</td>
<td><a target="_blank" href=@a.ImageURL>Click</a></td>
<td><button class="btn btn-primary" data-toggle="modal" data-target="#exampleModalLong" onclick="offerContract(@a.Loaction/* or @a.ImageURL*/)">Offer Contract</button></td>
</tr>
}
</tbody>
在 Javascript 中:
@section scripts
{
<script type="text/javascript">
function offerContract(param)
{
document.getElementById("dialogAssetID").innerHTML = "Asset No:".bold()+param.AssetID;
document.getElementById("dialogOwnerAddress").innerHTML="Your Public Key:" +param.OwnerID;
}
</script>
}
当且仅当我传递@a.Loaction 或@a.ImageURL 时,javascript 函数才会失败。这是控制台中的错误:'Uncaught SyntaxError: missing ) after argument list'。
模型的其余属性成功通过。'@a.Loaction' 和 '@a.ImageURL' 在 HTML 表格中工作正常我现在添加模型和表格方案:
public class Asset
{
[Key]
public int AssetID { get; set; }
[Required]
public int OwnerID { get; set; }
[Required]
public string OwnerPublicKey { get; set; }
[Required]
public string Loaction { get; set; }
[Required]
public int AreaIn { get; set; }
[Required]
public int Rooms { get; set; }
[Required]
public string ImageURL { get; set; }
[Required]
public double Price { get; set; }
}
我将不胜感激。在这个问题上花费了 6 个多小时。
解决方案
我找到了另一种传递有问题的属性的方法:
<tbody align="center">
@{ int i = 0;}
@foreach (var a in @Model.OwnAssetsList)
{
string loaction = "loc" + i;
string url = "url" + i;
<tr>
<td>@a.AssetID</td>
<td id=@loaction>@a.Loaction</td>
<td>@a.AreaIn</td>
<td>@a.Rooms</td>
<td><a id=@url target="_blank" href=@a.ImageURL>Click</a></td>
<td><button class="btn btn-primary" data-toggle="modal" data-target="#exampleModalLong" onclick="offerContract( @i)">Offer Contract</button></td>
</tr>
i++;
}
</tbody>
在函数中:
function offerContract(param)
{
var idLoac = "#loc" + param;
var idUrl = "#url" + param;
var demdloc = $(idLoac).text();
var demdurl = $(idUrl).attr("href");
document.getElementById("dialogAssetID").innerHTML = "Asset No:".bold() + demdloc;
document.getElementById("dialogOwnerID").innerHTML = "Your ID:".bold() + demdurl;
}
并且属性完全通过。
推荐阅读
- php - 学说中的实体存储库
- git - 如何在 Git 中重置我的默认主目录?
- c++ - C++。for_each 错误 c2672 和 c3867
- java - 依赖于 Singleton 的模拟类
- csv - 如何将逗号分隔的字符串转换为mule中的csv?
- apache-kafka - 键名中的 KSQL EXTRACTJSONFIELD 空格
- javascript - 新窗口无法访问 NWJS 模块?
- git - 我可以在不保留整个提交历史记录的情况下同步我的分叉分支吗?
- android - 为什么 Visual Studio 没有使用 xamarin 检测到我的外部设备?
- mysql - MYSQL 尝试使用 table1.dir 中的 group_concat 更新 table1.grp_dir