indian143 Ответов: 1

Создать гиперссылку на значение TD таблицы ASP.NET MVC и angularjs


Всем Привет,

Я пишу статью ASP.Net приложение MVC, в котором я отображаю таблицу, которая выглядит как сетка, используя AngularJS и какой-то HTML-скрипт. Когда я показываю таблицу и TD для ячейки, когда я нажимаю на значение TD, я должен иметь возможность выполнить действие метода Update или Edit, значение TD я показываю с помощью контроллера AngularJS. Я просматриваю коллекцию и отображаю значение в TD. Теперь в самом TD у меня должна быть гиперссылка на его значение, и при нажатии на нее должно быть вызвано действие обновления контроллера.
Если вы дадите мне еще один контроллер AngularJS и действие для вызова действия обновления в контроллере C#, это тоже нормально. Любая помощь может быть фрагментом кода, ссылкой или даже предложением, которое будет очень полезно. Заранее спасибо.

Вот мой взгляд
@using MVCWithWebApiApp.Models;
@using System.Linq;

@model IEnumerable<MVCWithWebApiApp.Models.User>

@{
    ViewBag.Title = "Index";
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Users Details</title>
    <script src="~/Scripts/jquery-2.2.4.min.js"></script>
    <script src="~/Scripts/angular.min.js"></script>
    <script src="~/Scripts/myApp.js"></script>
</head>

<body>
    <h2>Index</h2>
   <div data-ng-app="myApp" data-ng-controller="userController">
        <table style="border:none 0px gray;">
            <tr>
              <td>
        <table style="border:solid 1px gray;">
            <tr>
                <td style="border:solid 1px gray;">User Id</td>
                <td style="border:solid 1px gray;">User Name</td>               
            </tr>
            <tr data-ng-repeat="usr in users">
                
                <td><a href="/User/UpdateUser/"> {{usr.UserId}} </a> </td>
                <td><a>{{usr.UserName}}</a></td>               
            </tr>
        </table>
                    
                </td>
                <td>
                     @Html.ActionLink("Create User", "CreateUser")
                </td>
            </tr>
        </table>
    </div>  
</body>
</html>


Вот мой контроллер:
using MVCWithWebApiApp.Models;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MVCWithWebApiApp.Controllers
{
    public class UserController : Controller
    {
        public ActionResult Index()
        {
            var dbContext = new MVCDBContext();

            List<User> listOfUsers;
            listOfUsers = dbContext.Users.ToList();

            return View(listOfUsers);
        }

        public ActionResult GetUsers()
        {
            var dbContext = new MVCDBContext();

            List<User> listOfUsers;
            listOfUsers = dbContext.Users.ToList();

            return Json(listOfUsers, JsonRequestBehavior.AllowGet);
        }

        //
        // GET: /User/Details/5
        public ActionResult Details(int id)
        {
           
            return View();
        }

        //
        // GET: /User/Create

        public ActionResult CreateUser()
        {
            User user = new User();
            user.UserId = 1;
            user.UserName = "Abdul";

            return View(user);
        }

        //
        // POST: /User/Create
        [HttpPost]
        public ActionResult CreateUser(FormCollection collection)
        {
            try
            {
                var dbContext = new MVCDBContext();
                User user = new User();
                user.UserId = 1;
                user.UserName = "Abdul";

                dbContext.Users.Add(user);
                dbContext.SaveChanges();

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /User/Update/5
        public ActionResult UpdateUser(int id)
        {
            return View();            
        }

        //
        // POST: /User/Edit/5

        [HttpPost]
        public ActionResult UpdateUser(int id, FormCollection collection)
        {
            try
            {
                var dbContext = new MVCDBContext();

                User user = new User();
                user.UserId = 1;
                user.UserName = "Abdul";

                user = dbContext.Users.Where(i => i.UserId == 1).FirstOrDefault();
                user.UserName = "Abdul Aleem";

                dbContext.SaveChanges();

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /User/Delete/5

        public ActionResult DeleteUser(int id)
        {
            return View();
        }

        //
        // POST: /User/Delete/5

        [HttpPost]
        public ActionResult DeleteUser(int id, FormCollection collection)
        {
            try
            {
                var dbContext = new MVCDBContext();

                User user = new User();

                IQueryable<User> Users = dbContext.Users.Where(i => i.UserId == 1);

                foreach (User a in Users)
                {
                    dbContext.Users.Remove(a);
                }

                dbContext.SaveChanges();

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}


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

Я пытаюсь с помощью google и различных способов исправить это.

1 Ответов

Рейтинг:
2

Er Daljeet Singh

почему бы вам не попробовать jQuery Datatable для этого.

вот пример

<script scr="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<script src="//code.jquery.com/jquery-1.10.2.js"></script>

<table id="myDataTable">
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Description</th>            
        </tr>
    </thead>
    <tbody></tbody>
</table>



<script type="text/javascript">
    $('#myDataTable').dataTable({
        "bServerSide": true,
        "sAjaxSource": "Home/AjaxHandler",
        "bProcessing": true,
        "aoColumns": [
                                {
                                    "sName": "Id",
                                    "bSearchable": false,
                                    "bSortable": false,
                                    "mRender": function (data, type, full) {
                                        return '<a href="' + data + '">View</a>';
                                    }

                                },
                                { "sName": "Name" },
                                { "sName": "Description" },

                ]
    }); </script>




В контроллерах


[ActionLogAttribute]
   public class HomeController : Controller
   {
       public ActionResult Index()
       {
           return View();
       }


       public ActionResult AjaxHandler(jQueryDataTableParamModel param)
       {
           return Json(new
           {
               sEcho = param.sEcho,
               iTotalRecords = 97,
               iTotalDisplayRecords = 3,
               aaData = new List<string[]>() {
                   new string[] {"1", "Microsoft", "Redmond", "USA"},
                   new string[] {"2", "Google", "Mountain View", "USA"},
                   new string[] {"3", "Gowi", "Pancevo", "Serbia"}
                   }
           },
           JsonRequestBehavior.AllowGet);
       }
   }
   public class jQueryDataTableParamModel
   {
       /// <summary>
       /// Request sequence number sent by DataTable,
       /// same value must be returned in response
       /// </summary>
       public string sEcho { get; set; }

       /// <summary>
       /// Text used for filtering
       /// </summary>
       public string sSearch { get; set; }

       /// <summary>
       /// Number of records that should be shown in table
       /// </summary>
       public int iDisplayLength { get; set; }

       /// <summary>
       /// First record that should be shown(used for paging)
       /// </summary>
       public int iDisplayStart { get; set; }

       /// <summary>
       /// Number of columns in table
       /// </summary>
       public int iColumns { get; set; }

       /// <summary>
       /// Number of columns that are used in sorting
       /// </summary>
       public int iSortingCols { get; set; }

       /// <summary>
       /// Comma separated list of column names
       /// </summary>
       public string sColumns { get; set; }
   }



jQueryDataTableParamModel
этот класс используется для передачи параметра из datatable в серверную функцию, такую как номер страницы, столбец сортировки и т. д,

надеюсь, это поможет..