asp.net – 部分视图呈现按钮点击

前端之家收集整理的这篇文章主要介绍了asp.net – 部分视图呈现按钮点击前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有索引视图:
  1. @using System.Web.Mvc.Html
  2. @model MsmqTestApp.Models.MsmqData
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
  7. <Meta name="viewport" content="width=device-width" />
  8. <title>MsmqTest</title>
  9. </head>
  10. <body>
  11. <div>
  12. <input type="submit" id="btnBuy" value="Buy" onclick="location.href='@Url.Action("BuyItem","MsmqTest",new { area = "Msmq" })'" />
  13. <input type="submit" id="btnSell" value="Sell" onclick="location.href='@Url.Action("SellItem",new { area = "Msmq" })'" />
  14. </div>
  15. <div id="msmqpartial">
  16. @{Html.RenderPartial("Partial1",Model); }
  17.  
  18. </div>
  19. </body>
  20. </html>

和部分:

  1. @using System.Web.Mvc.Html
  2. @model MsmqTestApp.Models.MsmqData
  3.  
  4. <p>
  5. Items to buy
  6. @foreach (var item in Model.ItemsToBuy)
  7. {
  8. <tr>
  9. <td>@Html.DisplayFor(model => item)
  10. </td>
  11. </tr>
  12. }
  13. </p>
  14. <p>
  15. <a>Items Selled</a>
  16. @foreach (var item in Model.ItemsSelled)
  17. {
  18. <tr>
  19. <td>@Html.DisplayFor(model => item)
  20. </td>
  21. </tr>
  22. }
  23. </p>

和控制器:

  1. public class MsmqTestController : Controller
  2. {
  3. public MsmqData data = new MsmqData();
  4.  
  5. public ActionResult Index()
  6. {
  7.  
  8. return View(data);
  9. }
  10.  
  11. public ActionResult BuyItem()
  12. {
  13. PushIntoQueue();
  14. ViewBag.DataBuyCount = data.ItemsToBuy.Count;
  15. return PartialView("Partial1",data);
  16. }
  17. }

如何做到这一点,当我点击一个按钮只是部分视图渲染,现在控制器要移动我到BuyItem视图; /

解决方法

首先要做的是引用jQuery.现在你只引用了jquery.unobtrusive-ajax.min.js,但这个脚本依赖于jQuery,所以不要忘记在它之前包括
  1. <script src="@Url.Content("~/Scripts/jquery.jquery-1.5.1.min.js")" type="text/javascript"></script>
  2. <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

现在您的问题:您应该使用提交按钮与HTML表单.在你的例子中,你没有一个表单,所以在语义上更正确的是使用普通按钮:

  1. <input type="button" value="Buy" data-url="@Url.Action("BuyItem",new { area = "Msmq" })" />
  2. <input type="button" value="Sell" data-url="@Url.Action("SellItem",new { area = "Msmq" })" />

然后在单独的javascript文件中通过订阅.click()事件AJAXify这些按钮:

  1. $(function() {
  2. $(':button').click(function() {
  3. $.ajax({
  4. url: $(this).data('url'),type: 'GET',cache: false,success: function(result) {
  5. $('#msmqpartial').html(result);
  6. }
  7. });
  8. return false;
  9. });
  10. });

或者如果您想依靠Microsoft不引人注目的框架,您可以使用AJAX actionlinks:

  1. @Ajax.ActionLink("Buy","BuyItem",new { area = "Msmq" },new AjaxOptions { UpdateTargetId = "msmqpartial" })
  2. @Ajax.ActionLink("Sell","SellItem",new AjaxOptions { UpdateTargetId = "msmqpartial" })

如果您想要按钮而不是锚点,您可以使用AJAX表单:

  1. @using (Ajax.BeginForm("BuyItem",new AjaxOptions { UpdateTargetId = "msmqpartial" }))
  2. {
  3. <button type="submit">Buy</button>
  4. }
  5. @using (Ajax.BeginForm("SellItem",new AjaxOptions { UpdateTargetId = "msmqpartial" }))
  6. {
  7. <button type="submit">Sell</button>
  8. }

从我可以看到,您已经将jquery.unobtrusive-ajax.min.js脚本包含在您的页面中,这应该是正常的.

猜你在找的asp.Net相关文章