如何在运行时将值传递给jquery函数?
场景是,我有一个表单要登录用户,它将调用一个操作方法。操作方法将根据有效/无效用户名返回true/false。如果返回false,我希望jquery方法显示消息。我可以将该值作为模型视图传递,但问题是当第一次请求页面时,该值为null,因为当时未调用post的操作方法,因此它显示的错误(如对象引用)为null。如何处理这种情况。我没有给出代码,因为编码不是我的问题,我需要知道处理这个问题的最佳实践。谢谢 好的,这是我尝试过的Jquery方法如何在运行时将值传递给jquery函数?,jquery,asp.net-mvc-3,Jquery,Asp.net Mvc 3,场景是,我有一个表单要登录用户,它将调用一个操作方法。操作方法将根据有效/无效用户名返回true/false。如果返回false,我希望jquery方法显示消息。我可以将该值作为模型视图传递,但问题是当第一次请求页面时,该值为null,因为当时未调用post的操作方法,因此它显示的错误(如对象引用)为null。如何处理这种情况。我没有给出代码,因为编码不是我的问题,我需要知道处理这个问题的最佳实践。谢谢 好的,这是我尝试过的Jquery方法 <script type="text/javas
<script type="text/javascript">
$(document).ready(function () {
(' #SignIn').click(function () {
if (@Model.test === null) //Error is showing here, on the @Model.test call
{
$(' #Message').text("Null")
}
if(@Model.test===false)
{
$(' #Message').text("Invalid");
}
});
});
</script>
$(文档).ready(函数(){
(“#登录”)。单击(函数(){
如果(@Model.test==null)//在@Model.test调用中显示错误
{
$(“#消息”).text(“Null”)
}
if(@Model.test==false)
{
$('#Message')。文本(“无效”);
}
});
});
如果要返回模型中操作的结果,则需要在POST调用后执行java脚本操作。
试试这个
//In your Controller
[HttpGet]
public ActionResult SomeAction()
{
var model = new ModelView();
model.test = false;
return (model)
}
[HttpPost]
public ActionResult SomeAction(ModelView model)
{
if(ModelState.IsValid)
{
// write your logic here for validating user
model.test = true;
return View(model);
}
model.test = false;
return (model)
}
// In View
@model ViewModel
@if (model.test == true)
{
<script type="text/javascript">
$(document).ready(function () {
$(' #Message').text("Null")
});
</script>
}
else
{
<script type="text/javascript">
$(document).ready(function () {
$(' #Message').text("Invalid");
});
</script>
}
//在控制器中
[HttpGet]
公共行动结果某些行动()
{
var模型=新模型视图();
model.test=false;
退货(型号)
}
[HttpPost]
公共操作结果SomeAction(ModelView模型)
{
if(ModelState.IsValid)
{
//在此处编写逻辑以验证用户身份
model.test=true;
返回视图(模型);
}
model.test=false;
退货(型号)
}
//鉴于
@模型视图模型
@如果(model.test==true)
{
$(文档).ready(函数(){
$(“#消息”).text(“Null”)
});
}
其他的
{
$(文档).ready(函数(){
$('#Message')。文本(“无效”);
});
}
我已经根据您的情况为您提供了解决方案,但我建议您使用Ajax.BeginForm或javascript提交表单,并从操作中返回JSON。“我没有给出代码”-真的吗?至少显示发生错误的特定行。你说的是客户端JS错误吗?如果是这样,只需使用
If(yourVariable==null){/*必须是第一次,所以不要显示消息*/}
,测试null
。我刚刚尝试了相同的方法,仍然得到了错误!老实说,我不知道应该给出什么代码,我是说Jquery方法,我的操作方法还是业务逻辑的方法?!很抱歉。很抱歉,我对asp.net记忆犹新,不知道如果(@Model.test==null),服务器端会发生什么,但我怀疑它会按原样返回到浏览器,然后作为JS运行(而浏览器不知道您的@Model
是什么)。是的,我最终会用ajax来做!谢谢你的回答。