我有一个MVC5库存应用程序,允许用户订购用品。 视图向用户显示了他们希望订购的物品的当前 "库存"。 他们手动输入他们想要订购的数量。
我想做的是阻止他们提交视图,如果要求订购的数量大于手头的库存数量。
我首先尝试用jscript来处理这个问题,结果成功了,但帖子还是会被触发,所以它警告用户这个问题,但还是发了帖子。 这不是我所需要的。
然后我试着在控制器中进行处理。
这是我认为的相关代码
<div class="form-group">
@Html.Label("Units OnHand:", new { @class = "form-control" })
@Html.TextBox("OnHand", null, new { @class = "form-control", id = "OnHand", @readonly = "readonly" })
</div>
<!-- End Units OnHand-->
<!-- Begin Units Ordered-->
<div class="form-group">
@Html.Label("Qty of Units Ordered:", new { @class = "form-control" })
@Html.TextBox("UnitsOrdered", null, new { @class = "form-control", Value = ViewBag.Ordered, id = "UnitsOrdered", onblur = "stopit()" })
</div>
<input type="submit" id="addit" value="Add Supply To Request" class="btn btn-default" onclick="addSuppliesnow()" />
如你所见,我试着启动onblur = "stopit()",但没有成功,因为它只有在页面上的下一次点击后才会启动。 而在这个例子中,唯一的其他点击是提交按钮。 所以它正确地发射并警告用户,但随后还是提交了。
然后我尝试在控制器中做事情。 我从视图中传递了两个值(int OnHand, int UnitsOrdered)。
int Ordered = UnitsOrdered;
int Onhand = UnitsOnHand;
if (Ordered > Onhand)
{
return new EmptyResult();
}
else
{
(save the data as usual . . . . code here)
}
在上述情况下,每次都无法提交。 即使订购金额实际上小于手头的金额。 无论怎样,我似乎都无法点击 "其他 "部分。
我到底做错了什么? 有没有更好的方法来获得我需要的结果?