我正在使用ajax.beginform在另一個視圖中創建局部視圖。Ajax.beginForms MVC局部視圖
我用戶輸入正確的sn一切正常。 但是,如果用戶輸入一個無效的號碼,我想重定向到索引視圖。
現在,索引頁面本身作爲局部視圖提交。
我該如何避免這種情況。
這是我的觀點和2個簡化的動作結果的一部分。
@using (Ajax.BeginForm("MachineInfo", "QrCreate", new AjaxOptions() {
HttpMethod = "POST", UpdateTargetId = "form-content", InsertionMode =
InsertionMode.ReplaceWith }))
{
@Html.AntiForgeryToken()
<input type="text" id="sn" name="sn" class="inputsn"
placeholder="Enter your serial number here..." />
<input type="submit" value="Search" class="search btn btn-success btn-lg" />
}
</div>
</div>
<div id="form-content"></div>
我控制器
public ActionResult Index(bool? isValidMachine = null)
{
ViewBag.invalidSerialNumber = isValidMachine;
return View();
}
[HttpPost]
public ActionResult MachineInfo(string sn)
{
if(string.IsNullOrEmpty(sn))
RedirectToAction("Index", new { isValidMachine = false });
QrCreateViewModel qrCreateVM;
using (var machineService = new MachineApiService())
{
var machine = machineService.GetMachineFromSerialNumber(sn);
if (machine == null)
return RedirectToAction("Index", new { isValidMachine = false });
else
qrCreateVM = new QrCreateViewModel(machine, GetBasePath());
}
if (qrCreateVM.IsValid())
{
qrCreateVM.Viewurl = qrCreateVM.QrCreateUrlOrDefaultNull();
return PartialView(qrCreateVM);
}
else
return RedirectToAction("Index", new { isValidMachine = false });
}
Ajax調用不能重定向 - 他們的整點是留在同一頁上。一種選擇是在不返回部分視圖的情況下拋出一個Http Error,然後使用'OnFailure' ajax選項來調用一個腳本,重定向到你的'Index()'方法(儘管這更容易你擺脫了過時的'Ajax.BeginForm()'並使用'$ .ajax()',這給你更多的靈活性 –
謝謝你的回答我試圖找出你的第一個建議,它的工作原理,我知道beter選項是與jquery Ajax一起工作的,但是這個決定並不在我的手中 我不想接受你的評論作爲一個很好的答案,但那是行不通的 –
它遲到了,但我會添加在早上的詳細答案 –