MVC LOB应用程序

时间:2010-04-29 10:03:09

标签: asp.net-mvc model-view-controller asp.net-mvc-2

我是网络开发的新手,我从一个MVC项目开始。 我有一个创建新服务的观点。 在这个视图中,我需要一个按钮来显示一个带有客户端名称的对话框(我也想在这个对话框中实现过滤器和分页)。 一旦用户从对话框中选择客户端,我需要在服务视图中填充一些组合框,其中包含与该特定客户端相关的信息。 我怎么能做到这一点?如果有任何演示代码或教程,我可以亲自动手学习这个?

提前感谢任何提示。

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

哇,在一个问题上要回答很多。

我认为您需要首先浏览NerdDinner示例,以便让自己更熟悉MVC框架。

之后jQuery将成为你的朋友。基本上,您可以使用jQuery调用创建一个对话框,并使用对控制器的jQuery Ajax调用来获取和过滤数据。

jQuery的一个很好的参考是在jQuery.com

答案 2 :(得分:0)

(格里格斯,我无法评论你的回答,因为帖子太长了)

我现在正在使用TailSpin Travel作为圣经。

我怀疑你可以澄清一下。

修改视图

(...)
<div id="clientSearch">
        <%= Html.DropDownList("clientId", Model.Clients, Model.Clients)%>

        <div class="resultsWrapper">
            <div class="results">
                 <% Html.RenderPartial("clientDetails", Model); %>
            </div>
        </div>
</div>
(...)

客户详情部分查看

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<EyePeak.ViewModel.Service.EditServiceViewModel>" %>
    <% if(Model.SelectedClient != null) { %>
    <tr>
        <%Html.LabelFor(model => model.SelectedClient.Name);%>
        <%= Html.DropDownList("clientAddresses", Model.SelectedClient.Addresses.Select(i => new SelectListItem { Value = i.Id.ToString(), Text = i.Name}))%>
    </tr>
<% } %>

的Controler:

(...)

    public ActionResult New()
    {
        var service = new EyePeak.Data.Model.Service();

        return View("Edit", this.GetEditViewModel(service));
    }

(...)

     public ActionResult SearchClientAddresses(string clientID)
     {
         var selectedClient = this._clientService.GetClient(Convert.ToInt32(clientID));

         var model = new EditServiceViewModel
         {
            SelectedClient=selectedClient
         };

         return PartialView("clientDetails", model);
     }

jQuery的:

Sys.Application.add_load(

function()
{
   $("#clientId").bind("change", showClientInfo);
}
);

function showClientInfo()
{
   var id = $("#clientId").val();

   $("#clientSearch .results table").fadeOut();
   $("#clientSearch .results").slideUp("medium", function() {
       $.ajax(
                {
                    type: "GET",
                    url: "/Service/SearchClientAddresses",
                    data: "clientID=" + escape(id),
                    dataType: "html",
                    success: function(result) {
                        var dom = $(result);
                        $("#clientSearch .results").empty().append(dom).slideDown("medium");
                    }
                });
            });
}

我的问题是:我是否必须使用客户端信息创建一个新的EditServiceViewModel以将其传递给局部视图?我无法更新当前的ViewModel并将其传递给Partial视图吗?

我需要在此特定视图中创建更多部分视图,因此我需要为每个创建一个viewmodel?

也许我不太了解这个概念。

再次感谢您的帮助。