该项目是.Net framework3.5和MVC framework 1.0
在我看来,我有一个下拉列表
@Html.DropDownList("prodlist",@Model.products)
“添加产品”按钮
<td> <input type ="button" name ="Add Product" value ="Add Product" id="Button1" /> </td>
和文本框@Html.TextBox ("prodselected")
当我点击“添加产品”按钮时,我应该能够在文本框“prodselected”中显示在Dropdownlist上选择的项目的值
请有人告诉我怎么做。如果现有代码中需要更改,请建议。
观点是:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MockBDPWorkflowTestApp.ViewModels.WorkFlowTestViewModel>" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Submission</title>
</head>
<body>
<div>
<% using (Html.BeginForm())
{
%>
<div>
<table>
<tr>
<td>
<div id="SID">
<table id="tblID" cellpadding ="0" cellspacing ="0" border="1">
<tr>
<td width ="50%"> <label for="Process Inastance Id"> Process Inastance Id: </label> <%=@Html.TextBox("pInstance",@Model.processInstance) %></td>
<td width ="50%"> <label for ="Mail Id">Mail Id: </label> <%=@Html.TextBox("mail",@Model.mail) %> </td>
</tr>
</table>
</div>
<br /><br />
<table id="tblDet" cellpadding ="0" cellspacing ="0" >
<tr>
<td width="50%"> <label for="Submission Number"> Submission Number: </label> <%=@Html.TextBox("sNo") %></td>
<td width ="50%"> <label for ="Name Insured">Name Insured: </label> <%=@Html.TextBox("nameInsured") %> </td>
</tr>
<tr>
<td width="50%"> <label for="Broker Code"> Broker Code: </label> <%=@Html.TextBox("brokerCode") %></td>
<td width ="50%"> <label for ="Broker Name">Broker Name: </label> <%=@Html.TextBox("brokerName") %> </td>
</tr>
<tr>
<td width="50%"> <label for="Product Code"> Product Code: </label> <%=@Html.DropDownList("prodlist",@Model.products)%></td>
<td> <input type ="button" name ="Add Product" value ="Add Product" id="Button1" /> </td>
</tr>
<tr>
<td> <label for="Product Code"> Product Code Selected: </label> <%=@Html.TextBox ("prodselected")%></td>
<td> <input type ="submit" value ="Submit Submission" /> </td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<% } %>
</div>
控制器是:
namespace MockBDPWorkflowTestApp.Controllers
{
public class WorkFlowTestController : Controller
{
//
// GET: /WorkFlowTest/
public ActionResult OpenSubmission(string processId, string mailId)
{
var SubmissionModelView = new MockBDPWorkflowTestApp.ViewModels.WorkFlowTestViewModel{processInstance =processId, mail =mailId} ;
SubmissionModelView.products = new List<SelectListItem>();
SubmissionModelView.products.Add(new SelectListItem { Text = "GL", Value = "0", Selected = true });
SubmissionModelView.products.Add(new SelectListItem { Text = "Property", Value = "1" });
SubmissionModelView.products.Add(new SelectListItem { Text = "Package", Value = "2" });
SubmissionModelView.products.Add(new SelectListItem { Text = "Island Marine", Value = "3" });
return View("Submission", SubmissionModelView);
}
}
}
ViewModel是:
namespace MockBDPWorkflowTestApp.ViewModels
{
public class WorkFlowTestViewModel
{
public string processInstance { get; set; }
public string mail { get; set; }
public List<SelectListItem> products;
}
}
在视图中我添加了jquery函数,如下所示:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MockBDPWorkflowTestApp.ViewModels.WorkFlowTestViewModel>" %>
<script src="/Scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$('#Button1').click(function() {
$('#prodlist').val($('#prodselected').val());
});
});
</script>
该函数没有问题,但prodlist没有显示任何值,而警报给了我一些垃圾jquery: 我也试过这个: $('#prodlist option:selected')。text;但是这也没有从prodlist中选择值,而是警报给了我一些垃圾jquery。
答案 0 :(得分:5)
试试这个:
在viewmodel中创建一个属性,以存储下拉列表中的选定值
public class WorkFlowTestViewModel
{
public string processInstance { get; set; }
public string mail { get; set; }
public int product { get; set; }
public List<SelectListItem> products;
}
<td>
<label for="Product Code">Product Code: </label>
@Html.DropDownListFor(m => m.product, Model.products)</td>
<td>
[HttpPost]
public ActionResult OpenSubmission(WorkFlowTestViewModel model)
{
//model.product is your dropdown value
//your codegoes here
}
以下是 fiddle