首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动回到mvc下拉列表中

自动回到mvc下拉列表中
EN

Stack Overflow用户
提问于 2012-01-04 15:15:23
回答 4查看 19.5K关注 0票数 6

请求:我在视图页面上有一个下拉列表,显示供应商列表。当从下拉列表中选择供应商时,该页面将显示所选供应商的详细信息。默认情况下,我需要选择第一个供应商并显示其详细信息。我可以通过使用下面的代码来实现这一点。

问题:不知道如何在MVC中实现自动备份=真正的。在下拉列表中选择供应商时,我需要显示选定供应商的详细信息。

我正在使用ASP.net 4.0、MVC3、EntityFramework4.0。这是我的代码:

代码语言:javascript
复制
    [AcceptVerbs("POST")]
    public ActionResult SearchResult(FormCollection collection)
    {
        try
        {
            string vendorName = collection["searchItem"].ToString();

            vendorName = vendorName.Trim();
            List<Vendor> vendorList = Queries.compiledVendorQuery(dbContext, vendorName).ToList<Vendor>();

            if(vendorList.Count() == 0)
                return View("EmptySearch");

            List<SelectListItem> vendorSelectList = new List<SelectListItem>();
            foreach (Vendor vendor in vendorList)
            {
                vendorSelectList.Add(new SelectListItem
                {
                    Text = vendor.vendorName.ToString(),
                    Value = vendor.vendorId.ToString()
                });
            }

            Vendor selectedVendor = vendorList[0];

            VendorDetails vendorDeatils = Queries.compiledVendorDetailsQuery(dbContext, selectedVendor.vendorId.ToString()).FirstOrDefault();

            VendorResult vendorResult = new VendorResult();

            vendorResult.vendorSelectList = vendorSelectList;
            vendorResult.vendorDetails = vendorDeatils;

            return View(vendorResult);
        }
        catch (Exception e)
        {
            return View("EmptySearch");
        }
    }


public class VendorResult
{
    public List<SelectListItem> vendorSelectList { get; set; }
    public VendorDetails vendorDetails {get; set;}
}


public class VendorDetails
{
    public string vendorId { get; set; }
    public string vendorName { get; set; }
    public string address1 { get; set; }
    public string address2 { get; set; }
    public string address3 { get; set; }
    public string city { get; set; }
    public string state { get; set; }
    public string zip { get; set; }
    public decimal noteIndex { get; set; }
    public string comment1 { get; set; }
    public string comment2 { get; set; }
    public string phone { get; set; }
    public string interPhone { get; set; }
    public string fax { get; set; }
    public string interFax { get; set; }
}

编辑:定义下拉列表的代码。

代码语言:javascript
复制
@model KeleTools.Models.VendorResult

@{
    ViewBag.Title = "Vendor LookUp Tool";
    Layout = "~/Views/Shared/_ResultLayout.cshtml";
}

<h2>Vendor Details</h2>

<p> Select a vendor to display details:</p>

@Html.DropDownList("VendorList", @Model.vendorSelectList, null, new {target="_self"})

@using (Html.BeginForm("SearchResult", "VendorLookUp"))
{
   <div class="margin-10-top" >
    <table id= "OrderDetail" class="OrderDetail">
    <tr class="OrderDetail">
        <td class="PropertyName">Vendor Id:</td>
        <td class="PropertyValue">@Model.vendorDetails.vendorId.ToString().Trim()</td>
    </tr>
    <tr class="OrderDetail">
        <td class="PropertyName">Vendor Name:</td>
        <td class="PropertyValue">@Model.vendorDetails.vendorName.ToString().Trim()</td>
    </tr>
    @{
                             string address = @Model.vendorDetails.address1.ToString().Trim();
                             address = address + "\n";
                             address = address + @Model.vendorDetails.address2.ToString().Trim();
                             address = address + "\n";
                             address = address + @Model.vendorDetails.address3.ToString().Trim();

        <tr class="OrderDetail">
            <td class="PropertyName">Address</td>
            <td class="PropertyValue">@address.TrimEnd()</td>
        </tr>
    }
    @{
                                 string city = @Model.vendorDetails.city.ToString().TrimEnd();
                                 city = city + ", ";
                                 city = city + @Model.vendorDetails.state.ToString().Trim();
                                 city = city + " ";
                                 city = city + @Model.vendorDetails.zip.ToString().Trim();

        <tr class="OrderDetail">
            <td class="PropertyName">&nbsp;</td>
            <td class="PropertyValue">@city</td>
        </tr>

                                 string phoneNumber = null;
                                 if (!string.IsNullOrEmpty(@Model.vendorDetails.phone.ToString().Trim()))
                                 {
                                     phoneNumber = @Model.vendorDetails.phone.ToString().TrimEnd().Substring(0, 3);
                                     phoneNumber = phoneNumber + "-";
                                     phoneNumber = phoneNumber + @Model.vendorDetails.phone.ToString().TrimEnd().Substring(3, 3);
                                     phoneNumber = phoneNumber + "-";
                                     phoneNumber = phoneNumber + @Model.vendorDetails.phone.ToString().TrimEnd().Substring(6, 4);
                                     if (@Model.vendorDetails.phone.ToString().Trim().Length > 10)
                                     {
                                         phoneNumber = phoneNumber + " Ext: ";
                                         phoneNumber = phoneNumber + @Model.vendorDetails.phone.ToString().TrimEnd().Substring(10);
                                     }
                                 }

        <tr class="OrderDetail">
            <td class="PropertyName">Phone Number:</td>
            <td class="PropertyValue">@phoneNumber</td>
        </tr>
                                 phoneNumber = null;
                                 if (!string.IsNullOrEmpty(@Model.vendorDetails.fax.ToString().Trim()))
                                 {
                                     phoneNumber = @Model.vendorDetails.fax.ToString().TrimEnd().Substring(0, 3);
                                     phoneNumber = phoneNumber + "-";
                                     phoneNumber = phoneNumber + @Model.vendorDetails.fax.ToString().TrimEnd().Substring(3, 3);
                                     phoneNumber = phoneNumber + "-";
                                     phoneNumber = phoneNumber + @Model.vendorDetails.fax.ToString().TrimEnd().Substring(6, 4);
                                     if (@Model.vendorDetails.fax.ToString().Trim().Length > 10)
                                     {
                                         phoneNumber = phoneNumber + " Ext: ";
                                         phoneNumber = phoneNumber + @Model.vendorDetails.fax.ToString().TrimEnd().Substring(10);
                                     }
                                 }

        <tr class="OrderDetail">
            <td class="PropertyName">Fax:</td>
            <td class="PropertyValue">@phoneNumber</td>
        </tr>
                                 phoneNumber = null;
                                 if (!string.IsNullOrEmpty(@Model.vendorDetails.interPhone.ToString().Trim()))
                                 {

                                     phoneNumber = @Model.vendorDetails.interPhone.ToString().TrimEnd().Substring(0, 3);
                                     phoneNumber = phoneNumber + "-";
                                     phoneNumber = phoneNumber + @Model.vendorDetails.interPhone.ToString().TrimEnd().Substring(3, 3);
                                     phoneNumber = phoneNumber + "-";
                                     phoneNumber = phoneNumber + @Model.vendorDetails.interPhone.ToString().TrimEnd().Substring(6, 4);
                                     if (@Model.vendorDetails.interPhone.ToString().Trim().Length > 10)
                                     {
                                         phoneNumber = phoneNumber + " Ext: ";
                                         phoneNumber = phoneNumber + @Model.vendorDetails.interPhone.ToString().TrimEnd().Substring(10);
                                     }
                                 }

        <tr class="OrderDetail">
            <td class="PropertyName">International Phone:</td>
            <td class="PropertyValue">@phoneNumber</td>
        </tr>
                                 phoneNumber = null;
                                 if (!string.IsNullOrEmpty(@Model.vendorDetails.interFax.ToString().Trim()))
                                 {
                                     phoneNumber = @Model.vendorDetails.interFax.ToString().TrimEnd().Substring(0, 3);
                                     phoneNumber = phoneNumber + "-";
                                     phoneNumber = phoneNumber + @Model.vendorDetails.interFax.ToString().TrimEnd().Substring(3, 3);
                                     phoneNumber = phoneNumber + "-";
                                     phoneNumber = phoneNumber + @Model.vendorDetails.interFax.ToString().TrimEnd().Substring(6, 4);
                                     if (@Model.vendorDetails.interFax.ToString().Trim().Length > 10)
                                     {
                                         phoneNumber = phoneNumber + " Ext: ";
                                         phoneNumber = phoneNumber + @Model.vendorDetails.interFax.ToString().TrimEnd().Substring(10);
                                     }
                                 }

        <tr class="OrderDetail">
            <td class="PropertyName">International Fax:</td>
            <td class="PropertyValue">@phoneNumber</td>
        </tr>
        }
      <tr class="OrderDetail">
        <td class="PropertyName">Comment 1:</td>
        <td class="PropertyValue">@Model.vendorDetails.comment1.ToString().TrimEnd() < /td>
    < /tr>
    <tr class="OrderDetail">
        <td class="PropertyName">Comment 2:</td>
        <td class="PropertyValue">@Model.vendorDetails.comment2.ToString().Trim()</td>
    < /tr>

< /table> 
< /div>
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-04 15:18:36

在MVC中没有AutoPostback=true。你得自己把这件事装好。您可以这样做,使用jQuery:

代码语言:javascript
复制
$("#idOfMyDropDownList").change(function () {
    // Handle the change event, such as fire off an ajax request.
});
票数 8
EN

Stack Overflow用户

发布于 2012-03-09 16:50:42

将下拉实例化更改为

代码语言:javascript
复制
@Html.DropDownList("VendorList", @Model.vendorSelectList, new { onchange = "$(this).parent('form:first').submit();" }})
票数 15
EN

Stack Overflow用户

发布于 2013-12-13 12:20:20

你可以这样做:

代码语言:javascript
复制
@Html.DropDownList("VendorList", @Model.vendorSelectList, "--Select Vendor--", new { @onchange = "this.form.submit();" })
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8729171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档