0

我的剃须刀页面上有一个按钮“btnGetAddress”。单击此按钮时,我正在调用 Jquery 以使我的 addressItmes 对象显示在我的查看页面上。

单击“btnGetAddress”时,我可以"JsonResult GetAddresses()"在我的 Jquery 中点击并检索记录(success: function (data))。并且该数据有多个地址记录。但我不知道如何将这些数据带到我的视图中。请帮助我让我的数据显示在我的视图中

当我的页面被加载时,用户只会看到“btnGetAddress”按钮。当用户点击btnGetAddress时,它将调用Jquery Click函数从数据库中获取所有地址记录并在页面上显示每组记录

$("#btnGetAddress").click(function () { 

                debugger;
                var selected = $("#ddlType").val();
                if (selected == "")
                { selected = 0; }
                var dataToSend = {
                    SelectedTypeId: selected
                };
                $.ajax({
                    type: "GET",
                    url: '@Url.Action("GetAddresses", "Content")',
                    data: { SelectedTypeId: selected },
                    success: function (data) {
                        debugger;

                    },

                    error: function (error) {
                        var verr = error;
                        alert(verr);
                    }

                });

下面粘贴的是我的 JsonResult GetAddresses() ,它被调用以检索 addressItems

public JsonResult GetAddresses()
        {
   model.AddressItems = AddressService.RetrieveAllAddress(); 
 // My AddressItems is of type IEnumerable<AddressItems>   


 return Json(model.AddressItems, JsonRequestBehavior.AllowGet);
}

这是我要显示地址记录的剃须刀视图页面。

 ........................

  <input type="submit" id="btnGetAddress" name="btnSubmit" value="Show Addresses" />

  if (!UtilityHelper.IsNullOrEmpty(Model.AddressItems))
    {

        foreach (var AddressRecord in Model.AddressItems)
        {
    <fieldset >
        <legend style="padding-top: 10px; font-size: small;">Address Queue(@Model.NumRecords)
        </legend>
        <table>
            <tr>
                <td>
                    <span>Index</span>

                </td>
                <td>
                </td>
                <td>
                    <input type="submit" id="btnDelete" name="btnSubmit" value="X" />
                    <br />
                </td>
            </tr>
            <tr>
                <td>
                    <span>Address1</span>
                    <br />
                </td>
                <td>
                    @Html.EditorFor(model => AddressRecord.Address )
                    @Html.ValidationMessageFor(model => AddressRecord.Address)
                </td>
            </tr>
            <tr>
                <td>
                    <span>Description</span>
                    <br />
                </td>
                <td>
                    @Html.EditorFor(model => AddressRecord.Description)
                    @Html.ValidationMessageFor(model => AddressRecord.Description)
                </td>
            </tr>
           <tr>
                <td>
                    <input type="submit" id="btnSave" name="btnSubmit" value="Save" />
                </td>
                <td>
                    <input type="submit" id="btnDelete" name="btnSubmit" value="Delete" />
                </td>
            </tr>
        </table>
    </fieldset>
        }
        }

    <fieldset>

或者有没有更好的方法来实现我的目标?

4

2 回答 2

1

由于您是通过 ajax 获取数据,因此您应该使用 jquery 模板引擎。基本上以您的方式获取数据,并在成功时执行类似的操作

<script language="javascript" type="text/javascript">
    $(function () {
        $.getJSON("/getprojects", "", function (data) {
            $("#projectsTemplate").tmpl(data).appendTo("#projectsList");
        });
    });
</script>

<script id="projectsTemplate" type="text/html">
    <section>
        <header><h2>Projects</h2></header>
        <table id="projects">
            <th>Name</th>
            {{tmpl(items) "#projectRowTemplate"}}
        </table>
    </section>
</script>

<script id="projectRowTemplate" type="x-jquery-tmpl">
  <tr>
    <td><a href="/show/${id}">${name}</a></td>
  </tr>
</script>

<div id="projectsList"></div>

现在每个模板引擎都不同,但以上内容让您了解了您可以做什么

于 2012-04-26T19:34:37.787 回答
0

如果要在控制器中返回 JSON 对象,则必须将视图转换为字符串并将其作为消息的一部分返回。如果你谷歌有一些方法可以做到这一点。

但是,我真的认为这是一个艰难的方法,为什么不把你从控制器中的 JSON 获得的数据放入一个模型中,然后返回你的视图和传入的模型数据。我认为这是更简单的方法。

于 2012-04-26T19:53:36.237 回答