首页 > 解决方案 > 如何为整个应用程序仅使用一个 MVC 控制器?

问题描述

Is it possible Single Controller for Entire MVC Application to Route Views Or can we Rename Controller Name at Run-time to Route Views?.. 

我尝试了以下代码以使路线视图正常工作。控制器:-

public class HomeController : Controller
{
 public ActionResult Commmon_Method(string VN, string Id)
 {
   return View(@"~/" + VN + ".cshtml");
 }
}

查看页面:

$('#btn_Test').click(function () {
        window.location.href = '@Url.Action("Commmon_Method", "Home")?Id=' + 1 + '&VN=' + 'Views/Test/Index2';
    });

输出网址:-

http://localhost:52296/Home/Commmon_Method?Id=1&VN=Views/Test2/Index

-----------------------------------------*-------- -

即使我尝试了自己喜欢基于 MVC 的动态路由但无法成功:

http://localhost:52296/Home/Test2/Index

所以控制器名称应该是单一的以提供所有请求,并且我也尝试了运行时控制器并且基于自定义的控制器不成功

另一件事我在 MVC 中成功了单个动态 JSON 数据方法,因此无需编写代码包来使用 Jquery Ajax 方法获取 JSON 数据。

MVC 中唯一的事情,基于单控制器的路由成功意味着 MVC 将是非常容易开发的应用程序,所以您能否分享您的知识以简化复杂的开发方式

标签: model-view-controller

解决方案


<script>
    $('#btn_Test').click(function () {
        window.location.href = '@Url.Action("common_dll", "Home")?ctrl=Testing&View=Index';
        //window.location.href = '@Url.Action("Commmon_Method", "Home")?Id=' + 1 + '&VN=' + 'Areas/Testing/Views/Index';
    });
</script>

<script>
    //$(function () {
    //    var paramstr = '';
    //    paramstr = "@@Month$" + 1;
    //    paramstr += "~@@Year$" + 2018;
    //    paramstr += "~@@StateID$" + 0;
    //    paramstr += "~@@HubID$" + 0;
    //    paramstr += "~@@BranchID$" + 0;
    //    paramstr += "~@@EmpID$" + 0;
    //    paramstr += "~@@EmpTypeID$" + 0;
    //    paramstr += "~@@UserID$" + 1;
    //    paramstr += "~@@UserTypeID$" + 1;

    //    var data = getRowData_TableBased('DBSP_MM_Rpt_AttendanceMonthWsie', paramstr, '@Url.Action("GetRowData_Tables", "Home")');
    //    Grid(data);
    //});

    function Grid(data) {
        if (!isEmpty(data)) {
            //$("#jqxgrid").jqxGrid($.extend(true, {}, Common_grid(), {
            //    source: { datatype: "json", datafields: [], localdata: data },
            //    columns: Get_Colmns(data)
            //}));
        }
    }

    function Get_Colmns(data) {
        var datacols = [];
        if (!isEmpty(data)) {
            $.each(data.Table1, function (name, value) {
                if (value.ColumnWidth == 0)
                    datacols.push({ text: value.ColumnHeader, datafield: value.DataField, hidden: true });
                else
                    datacols.push({ text: value.ColumnHeader, datafield: value.DataField, cellsalign: 'left', align: 'left', width: value.ColumnWidth });
            });
        }
        return datacols;
    }
</script>

推荐阅读