GrpSMK Ответов: 1

Как конвертировать ASP в MVC


У меня есть веб-приложение highchart(круговая диаграмма).Теперь я хочу конвертировать в MVC, как это сделать?
здесь я использовал веб-сервисы и ajax jquery mehod.

Что я уже пробовал:

Веб-сервис
[WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService]
    public class city : System.Web.Services.WebService
    {

        public class cityPopulation
        {
            public string city_name { get; set; }
            public int population { get; set; }
            public string id { get; set; }
        }
        [WebMethod]
        public List<cityPopulation> getCityPopulation(List<string> pData)
        {
            List<cityPopulation> p = new List<cityPopulation>();

            using ( SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString))
            {
                string myQuery = "SELECT id,city_name,population FROM  citypopulation WHERE  year = @year";
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = myQuery;
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.AddWithValue("@year", pData[0]);
                cmd.Connection = cn;
                cn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        cityPopulation cpData = new cityPopulation();
                        cpData.city_name = dr["city_name"].ToString();
                        cpData.population = Convert.ToInt32(dr["population"].ToString());
                        p.Add(cpData);
                    }
                }
            }
            return p;
        }

    }

}


Jquery на странице aspx
<script type="text/javascript">
    $(document).ready(function() {

        $("#btnCreatePieChart").on('click', function(e) {
            debugger;
            var pData = [];
            pData[0] = $("#ddlyear").val();

            var jsonData = JSON.stringify({ pData: pData });

            $.ajax({
                type: "POST",
                url: "city.asmx/getCityPopulation",
                data: jsonData,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: OnSuccess_,
                error: OnErrorCall_
            });

            function OnSuccess_(response) {
                debugger;
                var aData = response.d;
                var arr = []

                $.map(aData, function(item, index) {
                    var i = [item.city_name, item.population];
                    var obj = {};
                    obj.name = item.city_name;
                    obj.y = item.population;
                    arr.push(obj);
                });
                var myJsonString = JSON.stringify(arr);
                var jsonArray = JSON.parse(JSON.stringify(arr));

                drawPieChart(jsonArray);

            }
            function OnErrorCall_(response) {
                alert("Whoops something went wrong!");
            }
            e.preventDefault();
        });

    });
    

        
            function drawPieChart(seriesData) {
                
                $('#container').highcharts({
                
                    chart: {
                        plotBackgroundColor: null,
                        plotBorderWidth: null,
                        plotShadow: false,
                        type: 'pie'
                    },
                    title: {
                        text: 'Population city wise'
                    },
                    tooltip: {
                        pointFormat: '{series.name}: {point.percentage:.1f}%'
                    },
                    plotOptions: {
                        pie: {
                            allowPointSelect: true,
                            cursor: 'pointer',
                            dataLabels: {
                                enabled: true,
                                format: '{point.name}: {point.percentage:.1f} %',
                                style: {
                                    color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
                                }
                            }
                        }
                    },
                    series: [{
                        name: "Brands",
                        colorByPoint: true,
                        data: seriesData
}]
                    });
                }
            

    
    </script>

F-ES Sitecore

Изучите MVC и как конвертировать ваш код, станет ясно, что это не сайт с кодом на заказ, где люди делают вашу работу за вас. Поскольку вы используете веб-методы и в основном js для выполнения этой работы, ее не должно быть слишком сложно преобразовать, просто используйте действие, а не веб-метод.

1 Ответов

Рейтинг:
0

Ramesh Kumar Barik

1. Сначала вы должны создать проект с шаблоном MVC, затем он создаст папки, из которых вы можете найти контроллер, модель, просмотр папок.
2. Добавьте свой класс cityPopulation в папку side model со списком свойств.
3. Создайте один контроллер в папке side controller и назовите его в соответствии с вашим req.
3. Поместите вид в папку вида и назовите его по своему выбору.

С этой точки зрения поставьте свой ajax-вызов.:

script type="text/javascript">
    $(document).ready(function() {
 
        $("#btnCreatePieChart").on('click', function(e) {
            debugger;
            var pData = [];
            pData[0] = $("#ddlyear").val();
 
            var jsonData = JSON.stringify({ pData: pData });
 
            $.ajax({
                type: "POST",
                url: "YourControllerName/getCityPopulation",
                data: jsonData,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: OnSuccess_,
                error: OnErrorCall_
            });
 
            function OnSuccess_(response) {
                debugger;
                var aData = response.d;
                var arr = []
 
                $.map(aData, function(item, index) {
                    var i = [item.city_name, item.population];
                    var obj = {};
                    obj.name = item.city_name;
                    obj.y = item.population;
                    arr.push(obj);
                });
                var myJsonString = JSON.stringify(arr);
                var jsonArray = JSON.parse(JSON.stringify(arr));
 
                drawPieChart(jsonArray);
 
            }
            function OnErrorCall_(response) {
                alert("Whoops something went wrong!");
            }
            e.preventDefault();
        });
 
    });
    
 
        
            function drawPieChart(seriesData) {
                
                $('#container').highcharts({
                
                    chart: {
                        plotBackgroundColor: null,
                        plotBorderWidth: null,
                        plotShadow: false,
                        type: 'pie'
                    },
                    title: {
                        text: 'Population city wise'
                    },
                    tooltip: {
                        pointFormat: '{series.name}: {point.percentage:.1f}%'
                    },
                    plotOptions: {
                        pie: {
                            allowPointSelect: true,
                            cursor: 'pointer',
                            dataLabels: {
                                enabled: true,
                                format: '{point.name}: {point.percentage:.1f} %',
                                style: {
                                    color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
                                }
                            }
                        }
                    },
                    series: [{
                        name: "Brands",
                        colorByPoint: true,
                        data: seriesData
}]
                    });
                }

----------------------------------------
Внутри контроллера создайте один метод действия :

public List<cityPopulation> getCityPopulation(List<string> pData)
        {
            List<cityPopulation> p = new List<cityPopulation>();
 
            using ( SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString))
            {
                string myQuery = "SELECT id,city_name,population FROM  citypopulation WHERE  year = @year";
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = myQuery;
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.AddWithValue("@year", pData[0]);
                cmd.Connection = cn;
                cn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        cityPopulation cpData = new cityPopulation();
                        cpData.city_name = dr["city_name"].ToString();
                        cpData.population = Convert.ToInt32(dr["population"].ToString());
                        p.Add(cpData);
                    }
                }
            }
            return p;
        }
 
    }


-----------------

Проверьте это, это может вам помочь.


GrpSMK

спасибо, вы знаете, как вызвать webservice в mvc?

Ramesh Kumar Barik

Обратитесь по этой ссылке и вы сможете получить лучшее представление.
http://www.c-sharpcorner.com/UploadFile/653eb2/consuming-web-services-in-Asp-Net-mvc-5-application/

GrpSMK

внутри действия достаточно кода веб-сервиса?

Ramesh Kumar Barik

Да..