[英]Return PartialView from another function in ASP.NET MVC3 C#
我不確定我想要實現的是否可能,但我正在嘗試創建一個通用應用程序,它將返回依賴於用戶提交的操作的PartialView。 不幸的是,以下代碼在運行時拋出以下錯誤:
傳遞到字典中的模型項的類型為“System.String”,但此字典需要“Core.Entities.CGrid”類型的模型項
在我看來,我使用以下jQuery掛鈎到任何錨標簽:
$("a").live('click', function (e) {
if ($(this).attr("href").indexOf("#func_") > -1) { {
var func = '/Core/FunctionCall?function=' + $(this).attr("href").replace("#func_", "");
$.ajax({
url: func,
type: 'GET',
async: false,
success: function (result) {
$("#customerTabBody").empty();
$("#customerTabBody").html(result);
}
});
}
});
這工作並且已經過測試,返回了FunctionCall.cshtml占位符頁面。 但是,我已經將FunctionCall函數修改為類似於下面(這是正在進行的工作):
public class CoreController : Controller
{
[HttpGet]
public ActionResult FunctionCall(string function)
{
Core.Entities.CFunction func = null;
try
{
using (CFunction f = new CFunction())
func = f.GetFunction(Convert.ToInt32(function));
if (func.ModuleName == "GRID")
return PartialView("GridView", func.Parameters[1].ToString());
else
return PartialView("FormView", func.Parameters[1].ToString());
}
catch (Exception)
{
return null;
}
}
[HttpGet]
public ActionResult GridView(string gridView)
{
Core.Entities.CGrid grid = null;
using (CGrid data = new CGrid())
grid = data.GetGridNew(gridView);
return PartialView(grid);
}
[HttpGet]
public ActionResult FormView(string formView)
{
Core.Entities.CForm form = null;
using (CForm data = new CForm())
form = data.GetForm(formView);
return PartialView(form);
}
}
如果我直接調用函數“GridView”和“FormView”,那么部分視圖會正確顯示而沒有錯誤,而不是滿足jQuery中可能需要的每種可能類型的視圖(或構建錨點的函數)鏈接)我想有一個函數來處理請求並根據傳遞的值返回一個視圖。 問題似乎是從另一個函數中返回這些PartialViews。
任何幫助是極大的贊賞。
ETA:謝謝@ YD1m(以及其他所有回復的人)。 我假設代碼將直接跳轉到“GridView”或“FormView”函數,而不是僅返回視圖。 我想要更多咖啡:)
以下是現在可以使用的修訂代碼:
[HttpGet]
public ActionResult FunctionCall(string function)
{
Core.Entities.CFunction func = null;
try
{
using (CFunction f = new CFunction())
func = f.GetFunction(Convert.ToInt32(function));
if (func.ModuleName == "CORE")
{
Core.Entities.CGrid grid = null;
using (CGrid data = new CGrid())
grid = data.GetGridNew(func.Parameters[1].ToString());
return PartialView("GridView", grid);
}
else
{
Core.Entities.CForm form = null;
using (CForm data = new CForm())
form = data.GetForm(func.Parameters[1].ToString());
return PartialView("FormView", form);
}
}
catch (Exception)
{
return null;
}
}
您傳遞以查看錯誤類型的模型。 檢查視圖文件中@model
語句中的模型類型,並確保從此代碼發送apt模型:
if (func.ModuleName == "GRID")
return PartialView("GridView", func.Parameters[1].ToString());
else
return PartialView("FormView", func.Parameters[1].ToString());
return PartialView("GridView", func.Parameters[1].ToString());
該行實際上並不調用GridView動作方法,它只返回名為“GridView”的局部視圖,並將第二個參數作為模型傳遞。 正如YD1m指出的那樣,這會導致錯誤,因為視圖未設置為接受字符串作為模型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.