将ViewModel传递给控制器​​

时间:2015-10-15 21:19:42

标签: model-view-controller model jsonresult

我的应用程序正在运行,但我被要求使用JSONResponseFactory更改消息的显示方式。但是当我尝试我的ViewModel为空时返回到JSonResult(以前是ActionResult)。我被告知我可能需要序列化表单字段。以下是一些现有的代码摘录:

CSHTML:

    function SubmitForm() {


    $.ajaxSetup({ cache: false });
    $.post('@Url.Action("StoreLevelPlanning", "StoreLevelPlanning")', { actionType: "Submit"})

    .done(function (data) {
        if (data.Success == true) {
            CreateInformationMessage(data.Message, 'window.location.href = "@Url.Action("storemanagement", "AccountListing")";');
        }
        else {
            CreateErrorMessage(data.Message);
        }
    });
}

控制器:

public JsonResult StoreLevelPlanning_Post(string actionType)  // actionType is Save or Submit
    {
        // message to return to the view on success
        string successMessage = "";
        var model = new VM_StoreLevelPlanning();
        TryUpdateModel(model);
        try
        {
            if (ModelState.IsValid)
            {
                model.buttonPressed = actionType;
                repo.UpdateCLPCategoryAndRemark(model);

                //Render different message depending on ActionType
                if (actionType == "Save")
                {
                    successMessage = "Your plan was saved.  You  will now be directed to the Listing Screen";
                }
                else if (actionType == "Submit")
                {
                    successMessage = "Your plan has been submitted. You will now be directed to the  Listing Screen.";
                }
                else
                {
                    //return RedirectToAction("storemanagement", "AccountListing");
                    // need to revisit to figure out if this can be removed
                    throw new Exception("Else case happened");
                }
            }
            else
            {
                if (actionType == "Save")
                {
                    // TODO : change this to throw an error so that the ErrorLog class is utilized
                    throw new Exception("Your plan was not saved. Please retry.");
                }
                else
                {
                    // TODO : change this to throw an error so that the ErrorLog class is utilized
                    throw new Exception("Your plan was not submitted. Please retry.");
                }
            }
        }
        catch (Exception e)
        {
            return Json(JsonResponseFactory.ErrorResponse(e.Message));
        }
        return Json(JsonResponseFactory.SuccessResponse(successMessage));
    }

由于我是MVC的新手,我对任何建议持开放态度。我们的想法是发布成功的保存消息并将用户重定向到列表页面。但他现在改变了代码,视图模型是空的。它不使用表单集合。数据位于视图模型的列表中。

提前谢谢你......

0 个答案:

没有答案