【问题标题】:calling function in class library from view in another project in same solution从同一解决方案中另一个项目的视图中调用类库中的函数
【发布时间】:2014-02-11 09:44:08
【问题描述】:

我在类库中有这样的函数

================

  public class QUnitTestController : DesignerController
{
    public ActionResult Index()
    {
        InitializeModel();

        var designer = ((Designers)(Convert.ToInt32(DesignerId))).ToString();

        ViewBag.ControllerName = designer;

        return View("Index");
    }

    [HttpPost]
    [ActionName("designdocument")]
    public virtual ActionResult GetDesignDocument()
    {
        return GetJson("~/xmldata/Designer/QUnitDesignDoc.xml", true);

    }

    [HttpPost]
    [ActionName("designconfig")]
    public virtual ActionResult GetDesignConfig()
    {

        return GetJson("~/xmldata/Designer/QUnitDesignConfig.xml", true);
    }

    public ContentResult GetJson(string data, bool isUri)
    {
        var document = new XmlDocument();

        if (isUri)
        {
            document.Load(Server.MapPath(data));
        }
        else
        {
            document.LoadXml(data);
        }

        string jsonText = JsonConvert.SerializeXmlNode(document.DocumentElement);
        return Content(jsonText, "text/html", Encoding.UTF8);
    }
}

我在另一个 MVC 项目的自定义视图中有一些 jquery 代码,如下所示:-`

    <script type="text/javascript">

    //var designerDocument = null;
    //var designerConfig = null;
    //var designerController = null;
    //var zoom = null;


        function Test() {
            $.ajax({
                url: "QUnitTest/designdocument",
                type: "POST",
                dataType: 'json',
                async: true,//WHY??
                data: param = "",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    alert("success");
                },
                error: function () {
                    alert("something went wrong");
                }
            });

            $.ajax({
                url: "QUnitTest/designconfig",
                type: "POST",
                dataType: 'json',
                async: true,//WHY??
                data: param = "",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    alert("success");
                },
                error: function () {
                    alert("something went wrong");
                }
            });

            designerController = new Design.QUnitTestController();

            zoom = 0;
        }





        module("Load Designer Module", {
            setup: function () {
                //Test();
            }
        });
        test("Load Designer", function () {

            ok(true, "body was clicked!");
            var a = designerController.InitializeDesigner(designerDocument, designerConfig, "#designerContainer");
            equal(a, "expected value");
        });





</script>

问题是我无法调用类库中的函数。请告诉我我该怎么做才能让它工作

【问题讨论】:

    标签: c# jquery asp.net-mvc unit-testing qunit


    【解决方案1】:

    您需要注册一个正确的路由来将诸如“QUnitTest/someaction”之类的 URL 映射到您的控制器操作:

    检查您的 Global.asax.cs 或 RouteConfig 类并将以下代码添加到 RegisterRoutes 方法:

    routes.MapRoute(
        name: "QUnitTest",
        url: "QUnitTest/{action}",
        defaults: new { controller = "QUnitTest", action = "Index" },
        namespaces: new[] { "NamespaceOfQUnitTestControllerClass" }
    );
    

    【讨论】:

    • 我的 Global.asax.cs 文件为空,我的项目中没有 RouteConfig 文件
    • 检查 MVC 项目,而不是类库。
    • 如果没有 Global.asax,MVC 项目将无法正常工作。它是应用程序的入口点。在您的 MVC 项目中搜索“MapRoute”,可能是您有一些自定义类来注册路由而不是标准的 Application_Start 处理程序。
    • 我检查了整个项目,但没有找到任何 Application_Start 处理程序。
    • 我想在这里实现的只是......我正在使用的ajax方法应该找到控制器操作方法..它似乎由于某种原因无法这样做,因为我的控制器位于不同的库项目中,这就是为什么它返回错误...而不是成功。
    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 2021-08-19
    • 2011-07-31
    • 1970-01-01
    相关资源
    最近更新 更多