- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我不知道 AjaxForm
如何知道何时触发 OnSuccess
或 OnError
方法。但是,是否可以根据 Boolean
值让它们触发 OnSuccess 或 OnError 方法?
@using(Ajax.BeginForm("AddAttendeeManual", "Attendee", new AjaxOptions { HttpMethod = "POST", OnSuccess = "doneManualEmail" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
@Html.HiddenFor(m=>m.SelectedManualEmail.AppointmentId)
<div class="form-group">
@Html.LabelFor(m => m.SelectedManualEmail.Email, new { @class = "col-md-2 control-label" })
<div class="col-md-8 input-group">
@Html.TextBoxFor(m => m.SelectedManualEmail.Email, new {@class = "form-control",PlaceHolder="Email"})
<input type="submit" id="btnManual"class="btn btn-default" value="Add>>" />
</div>
</div>
}
这是 OnSucess
方法(在同一个 View 上)
function doneManualEmail() {
alert("Success");
$(@Html.IdFor(m=>m.SelectedManualEmail.Email)).val('');
var url = $("#invitedPeoples").data('url');
$.get(url, function (data) {
$('#invitedPeoples').html(data);
});
};
这是 Controller 方法
[HttpPost]
[ValidateAntiForgeryToken]
public void AddAttendeeManual(CreateAppointmentSelectPersons manualEmail)
{
_attendeeRepository.AddManualAttendee(manualEmail.SelectedManualEmail.AppointmentId,
manualEmail.SelectedManualEmail.Email);
}
目前,当提交表单时,它会调用 Controller 的方法(将人员添加到数据库的地方),然后调用上面提到的 OnSuccess 方法。到现在没问题。
但是现在,我想在 Controller 中检查一些东西(如果 person 存在的话),这是我现在 Controller 的方法
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddAttendeeManual(CreateAppointmentSelectPersons manualEmail)
{
bool result = _attendeeRepository.CheckIfAttendeeExists(manualEmail.SelectedManualEmail.AppointmentId, manualEmail.SelectedManualEmail.Email);
if(!result)
{
_attendeeRepository.AddManualAttendee(manualEmail.SelectedManualEmail.AppointmentId,
manualEmail.SelectedManualEmail.Email);
//call OnSuccess method
}
else
{
//add ModelStateError on client side?? or make it fire OnError method?
}
}
PS:这个view没有get方法。基于 bool 值,我希望表单触发 OnSuccess 或 OnError 方法,如果它是 OnError,则在客户端添加错误(如模型状态)。
这可能吗?
最佳答案
Ajax.BeginForm
OnError
方法基本上是 jQuery.ajax error
函数并在请求失败时被调用。因此,在您的情况下,除非您手动抛出异常,否则无法触发它。在我看来,这是一个解决方案,但不是一个好的解决方案。 CheckIfAttendeeExists
是正常的业务用例,应该由代码处理,而不是抛出异常。
相反,您可以返回一个 JSON,指示与会者是否存在:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddAttendeeManual(CreateAppointmentSelectPersons manualEmail)
{
bool result = _attendeeRepository.CheckIfAttendeeExists(manualEmail.SelectedManualEmail.AppointmentId, manualEmail.SelectedManualEmail.Email);
if(!result)
{
_attendeeRepository.AddManualAttendee(manualEmail.SelectedManualEmail.AppointmentId,
manualEmail.SelectedManualEmail.Email);
}
return Json(new { AttendeeExists = result, ErrorMessage = "Attendee already exists" });
}
在客户端检查属性:
function doneManualEmail(response) {
if(response.AttendeeExists) {
alert(response.ErrorMessage); // or something else
}
else {
alert("Success");
$(@Html.IdFor(m=>m.SelectedManualEmail.Email)).val('');
var url = $("#invitedPeoples").data('url');
$.get(url, function (data) {
$('#invitedPeoples').html(data);
});
}
};
ModelState 不会在这里帮助您,因为您的模型是有效的。您可以使用 JSON 返回错误消息。查看编辑后的代码。
关于c# - 根据 Controller 中的 bool 值使 Ajax.BeginForm 的 OnSuccess 或 OnFailure 方法在 View 中生效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21902242/
我正在使用来自 Loopj 的 android-async-http 库,我的代码中没有调用 onFailure,我已经尝试了所有三种方法.. W/JsonHttpRH:onFailure(int,
问题 为什么我可以通过我的 mainActivity 连接到我的服务器,而不是通过 fragment ? 设置 程序 1 - 有效... 现在,我有两个程序。第一个称为 mqtt_test,它包括一个
当从服务器调用 persist() 方法时,在验证电子邮件的唯一性后会引发异常。 问题是调用了客户端的 onSuccess 方法,而不是 onFailure。这是代码。 RequestContext
我正在玩“ListenableFutureCallback”。 onSuccess() 工作正常,但 onFailure 永远不会被调用。下面是一些示例代码。 @Service public clas
有人知道如何从附加到 OkHttp 客户端的拦截器类调用 onFailure 回调吗? 最佳答案 @warnyul 评论是对的。一旦我抛出 IOException,它就会触发失败。 关于Android
我目前正在编写一些单元测试,我想每隔几分钟持续运行一次。如果它们中的任何一个失败了,我想捕获引发的错误并对它们进行一些自定义处理(在我的例子中发送警报)。有这样做的标准方法吗?我一直在查看 unitt
我有一个 AJAX.RouteLink,它具有以下 AJAXOptions new AjaxOptions { HttpMethod = "PO
我一直在开发 Android 应用程序,我正在使用 Retrofit。 如何处理 onFailure(Throwable t) 回调 NoInternetConnection 和 OtherError
我正在试用从 http://loopj.com/android-async-http/ 下载的适用于 Android 的 AndroidAsyncHttp 库并试图找到评估 onFailure(Thr
我在 PageMethod 调用中使用了 onSuccess 和 onFailure。然而,它们都没有被调用,WebMethod 也没有被解雇。 alert("1"); PageMethods.Log
例如,当您在 elasticsearch 中发出异步请求时,onFailure 会返回 Exception。如下所示处理异常是否合适。 @Override
我尝试首先使用 Retrofit 将数据获取到类(class)。但我发现我的程序将进入“onFailure”选项。 错误消息: 2020-03-07 18:54:04.499 17756-17756/
如果我有一些计算需要一段时间,我可能会把它放在 scala.concurrent.Future 中: val f = Future { someLongRunningFunction() } 假设我想
我无法理解这个问题。总是在失败时返回。数据返回状态码200,OnResponse不返回。 回应D/OkHttp: > auth( @Field("username") String u
如果我有一些计算需要一段时间,我可能会把它放在 scala.concurrent.Future 中: val f = Future { someLongRunningFunction() } 假设我想
GWT 的 RPC 调用的 onFailure() 方法中是否可以抛出异常?因为这个方法稍后会在服务器响应后被调用,我很抱歉这里可能会发生一些不好的事情.. 例如: public void metho
我正在创建一个需要用户身份验证的应用程序。我在尝试登录时遇到一个问题。当我输入正确的用户名和密码时,将调用 onSuccess 方法。但是,当我输入错误的字段或空字段时,不会调用 onFailure(
我正在尝试运行一个简单的测试应用程序来学习 Retrofit。 onFailure 方法总是被调用,请帮助我。我所做的一切如下: 主 Activity public class MainActivit
我正在使用 Ajax.BeginForm 调用我的应用程序来运行一些代码。出现错误时,我想返回我将创建的自定义错误消息。 但是到目前为止我还无法做到这一点。这就是我所拥有的: Controller :
我知道这是一个常见问题,但我做了所有这些,仍然没有解决。在我的 MainActivity 中,我收到了来自 ServerService.java 的调用,如下所示: String randomNumb
我是一名优秀的程序员,十分优秀!