Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从ASP.NET MVC中的另一个函数返回PartialView#_C#_Jquery_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc Partialview - Fatal编程技术网

C# 从ASP.NET MVC中的另一个函数返回PartialView#

C# 从ASP.NET MVC中的另一个函数返回PartialView#,c#,jquery,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-partialview,C#,Jquery,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc Partialview,我不确定我试图实现的目标是否可能,但我正在尝试创建一个通用应用程序,该应用程序将根据用户提交的操作返回PartialView。不幸的是,以下代码在运行时引发以下错误: 传入字典的模型项的类型为“System.String”,但此字典需要“Core.Entities.CGrid”类型的模型项 在我看来,我正在使用以下jQuery,它钩住了任何锚定标记: $("a").live('click', function (e) { if ($(this).attr("href").

我不确定我试图实现的目标是否可能,但我正在尝试创建一个通用应用程序,该应用程序将根据用户提交的操作返回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函数,如下所示(这是正在进行的工作):

如果我直接调用函数“GridView”和“FormView”,则局部视图将正确显示,没有错误,而不是满足jQuery中可能需要的每种类型的视图(或构建锚链接的函数)我希望有一个单独的函数来处理请求,并根据传递的值返回一个视图。问题似乎是从另一个函数中返回这些partialView

非常感谢您的帮助

埃塔:谢谢@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());

此行实际上并不调用GridView actionmethod,它只是返回名为“GridView”的部分视图,并将第二个参数作为模型传递。正如YD1m指出的,这会导致错误,因为视图未设置为接受字符串作为其模型。

消息很清楚:您正在向视图发送字符串,但它需要
Core.Entities.CGrid
object感谢Andre,事后看来,问题很清楚。这是一个过度思考我担心的问题的例子:)完美,我假设它将跳入“GridView”或“FormView”函数,而不是直接调用视图。Doh!:)非常感谢。我将用有效的代码更新我的问题。谢谢。我将答案授予YD1m,因为他们首先做出了回应,但这个答案也有助于澄清问题。
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());