您好这是我的详细信息视图,其中有一个输入。在按钮上单击我想比较文本框与txbNumber的值是否大于属性Quantity of my model - >但它给了我语法错误。
OnlineStore.Commercial.Models.CategoryProductDetailsViewModel
@{
ViewBag.Title = "Details";
}
<script src="/Scripts/dist/libs/jquery.js"
type="text/javascript"></script>
<table>
<tr>
<td>@Model.bigImageTitle</td>
<td>@Model.Title</td>
<td>@Model.ShortDescription</td>
<td>@Model.Description</td>
<td>@Model.Price</td>
</tr>
</table>
<label>Quantity:</label>
<input type="text" id="txbNumber" />
<input type="button" onclick="validate()" />
<script>
function validate()
{
var regex = /[0-9]|\./;
if (regex.test($("#txbNumber").val()))
{
var orderquantity=$("#txbNumber").val();
if ( @int.Parse(orderquantity) > @Model.Quantity)
{
/*here is the exception
}
}
}
</script>
答案 0 :(得分:1)
您将Razor语法与Javascript混合(一个在响应从服务器发送到客户端之前执行,第二个在客户端完全执行)。
而不是:
if ( @int.Parse(orderquantity) > @Model.Quantity)
您应该使用全局javascript解析方法将字符串转换为整数:
if ( parseInt(orderquantity) > @Model.Quantity)
答案 1 :(得分:0)
这不起作用:
@int.Parse(orderquantity)
试试这个:
if ( parseInt($("#txbNumber").val()) > @Model.Quantity)
根据@bejger
的建议,使用parseInt()更新了安全性答案 2 :(得分:0)
尝试
if(parseInt(orderquantity) > Number(@Model.Quantity)) {
doStuff();
}
有时候razor会把数字放到javascript中变得很奇怪。
答案 3 :(得分:0)
分开您的疑虑。您的javascript不应该在您的视图中。使用您的代码添加对javascript文件的引用。那么你应该能够将这些值与javascript / jquery进行比较。如果需要,请在$(document).ready(function(){}中添加代码,以便在页面加载时设置原始模型值以进行比较。