2012-05-03 17 views
0

我有以下操作方法,它返回部分視圖_create。但有沒有辦法通過部分視圖傳遞Json對象,如return Json(new { IsSuccess = "True" },我可以同時從我的操作方法中返回部分視圖和Json對象嗎

我的行動方法看起來如下: -

try 
{ 
    if (ModelState.IsValid) 
    { 
    var v = repository.GetVisit(visitid); 
    if (!(v.EligableToStart(User.Identity.Name))) 
    { 
     return View("NotFound"); 
    } 
    vlr.VisitID = visitid; 
    repository.AddVisitLabResult(vlr); 
    repository.Save(); 
    ViewBag.LabTestID = new SelectList(repository.FindAllLabTest(), "LabTestID", "Description", vlr.LabTestID); 
    // return Json(new { IsSuccess = "True" }, JsonRequestBehavior.AllowGet); 
    @ViewBag.status = "Added Succsfully"; 
    return PartialView("_create",vlr) ; 
    } 
} 

:: - UPDATED- ::

什麼,我試圖做如下: -

  1. 我我正在使用ajax.beginform調用操作方法

    using (Ajax.BeginForm("CreateAll", "VisitLabResult", new AjaxOptions 
    { 
        HttpMethod = "Post", 
        UpdateTargetId = item.ToString(), 
        InsertionMode = InsertionMode.Replace, 
        OnSuccess = string.Format("disableform({0})", Json.Encode(item)), 
    })) 
    
  2. 成功接收來自服務器的響應後,,該的onSuccess腳本執行,,,腳本簡單地禁用形式: -

    function disableform(id) { 
        $('#' + id + ' :input').prop("disabled", true); 
    } 
    

的問題是,腳本總會禁用表格即使是一些驗證錯誤發生,所以我想要實現的是返回一個JSON的部分視圖,指示ModelState.IsValid是否有效,,如果它是無效的保持該表單允許用戶更正驗證錯誤。

BR

回答

0

您可以從操作方法返回只有一個視圖,如果你想傳遞等信息,利用ViewData的或ViewBag

ViewBag.IsSuccess = "True"; 

或者

ViewData["IsSuccess"] = "True"; 
0

不,您只能返回視圖並傳遞JSON作爲模型,或ViewBag(我推薦模型)。

+0

我認爲viewbag和viewmodel都不能解決我的問題,請檢查我的更新以瞭解我面對的問題的更多細節 –

0

爲什麼不簡單地擴展已經傳遞給視圖的模型,並添加屬性IsSuccess

ViewBag或ViewData在我看來是邪惡的。嘗試在將數據返回到視圖時始終使用ViewModel。

0

在這種情況下,我用以下解決方案:

在你的Ajax表單定義設置:

OnComplete = "yourCallback" 

然後:

yourCallback = function(response){ 
    var json = response.responseJSON; 
    if(json.success){ 
    alert('Well done!'); 
    } else { 
    var form = $('#formId'); 
    form.html(json.html); 
    form.removeData("validator").removeData("unobtrusiveValidation"); 
    $.validator.unobtrusive.parse(form); 
    } 
} 

你的控制器應返回是這樣的:

var result = new { success = false, html = helper.Partial("_YourPartial", model) }; 
return Json(result); 

其中helper可幫助您爲部分視圖添加驗證。(在這裏描述:https://stackoverflow.com/a/4270511/952023

相關問題