【问题标题】:Automatically call controller method and generate partial view. How?自动调用控制器方法并生成局部视图。如何?
【发布时间】:2013-10-30 15:00:58
【问题描述】:

我想在局部视图中自动生成一个列表。

_Layout.cshtml

@Html.Partial("../Transaction/_Transaction")

事务控制器

public JsonResult transactionlist()
        {
            List<Transaction> TransactionList = new List<Transaction>().ToList();
            string Usercache = MemoryCache.Default[User.Identity.Name] as string;

            int UsercacheID = Convert.ToInt32(Usercache);
            if (Usercache == null)
            {
                int UserID = (from a in db.UserProfiles
                              where a.UserName == User.Identity.Name
                              select a.UserId).First();
                UsercacheID = UserID;
                MemoryCache.Default[User.Identity.Name] = UsercacheID.ToString();
            }
            var Account = (from a in db.UserAccount
                           where a.UserId == UsercacheID
                           select a).First();

            var DBTransaction = from a in db.Transaction
                                where a.AccountId == Account.AccountId
                                select a;

            var DBTransactionList = DBTransaction.ToList();
            for (int i = 0; i < DBTransactionList.Count; i++)
            {
                TransactionList.Add(DBTransactionList[i]);
            }
            ViewBag.acountsaldo = Account.Amount;

            return Json(TransactionList, JsonRequestBehavior.AllowGet);
        }`

我的_Transaction.cshtml 应该如何编码以制作一个没有提交按钮等的简单列表?

【问题讨论】:

    标签: c# ajax asp.net-mvc json razor


    【解决方案1】:

    一种方法是让页面返回一个项目列表并将它们提供给您的部分。

    function ActionResult GetMainTransactionView()
    {
      List<Transaction> transactions=GetTransactions();
      return PartialView("TransactionIndex",transactions);
    }
    

    TransactionIndex.cshtml

    @model List<Transaction>
    @Html.Partial("../Transaction/_Transaction",model)
    

    Main.chtml

    <a id="transactionLink" href='@Url.Action("GetMainTransactionView","Transaction")'/>
    

    【讨论】:

      【解决方案2】:

      你应该调用你的控制器动作并让它返回你的局部视图。另外,请使用视图模型而不是 viewbag。

      布局或父视图/部分视图:

      @Html.Action("Transaction", "YourController")
      

      局部视图:

      @model TransactionModel
      @foreach (Transaction transaction in Model.TransactionList) {
          // Do something with your transaction here - print the name of it or whatever
      }
      

      查看模型:

      public class TransactionModel {
          public IEnumerable<Transaction> TransactionList { get; set; }
      }
      

      控制器:

      public class YourController
      {
          public ActionResult Transaction()
              {
                  List<Transaction> transactionList = new List<Transaction>().ToList();
                  // Your logic here to populate transaction list
                  TransactionModel model = new TransactionModel();
                  model.TransactionList = transactionList;
      
                  return PartialView("_Transaction", model);
              }
      }
      

      【讨论】:

        猜你喜欢
        • 2015-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-25
        • 1970-01-01
        相关资源
        最近更新 更多