将文本框值的值与模型属性mvc进行比较

时间:2014-02-14 14:24:46

标签: javascript asp.net-mvc

您好这是我的详细信息视图,其中有一个输入。在按钮上单击我想比较文本框与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>

4 个答案:

答案 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:  check this minimal Fiddle

答案 2 :(得分:0)

尝试

if(parseInt(orderquantity) > Number(@Model.Quantity)) {
    doStuff();
}

有时候razor会把数字放到javascript中变得很奇怪。

答案 3 :(得分:0)

分开您的疑虑。您的javascript不应该在您的视图中。使用您的代码添加对javascript文件的引用。那么你应该能够将这些值与javascript / jquery进行比较。如果需要,请在$(document).ready(function(){}中添加代码,以便在页面加载时设置原始模型值以进行比较。