C# 如何从控制器MVC获取选定的下拉值
以下是观点:C# 如何从控制器MVC获取选定的下拉值,c#,jquery,asp.net-mvc,razor,C#,Jquery,Asp.net Mvc,Razor,以下是观点: <div class="editor-label"> Select Currency : </div> <div class="editor-field"> @Html.DropDownList("CurrencyId", new SelectList(ViewBag.CurrencyId, "Value", "Text")) </div><div cl
<div class="editor-label">
Select Currency :
</div>
<div class="editor-field">
@Html.DropDownList("CurrencyId", new SelectList(ViewBag.CurrencyId, "Value", "Text"))
</div><div class="editor-label">
Select GameType :
</div>
<div class="editor-field">
@Html.DropDownList("GameTypeId", new SelectList(ViewBag.GameTypeId, "Value", "Text"), new { style = "width:100px" })
@Html.ValidationMessageFor(model => model.GameTypeId)
</div>
<div class="editor-label">
Select Category :
</div>
<div class="editor-field">
@Html.DropDownList("CategoryByGameType", Enumerable.Empty<SelectListItem>(), "Select Category")
@Html.ValidationMessageFor(model => model.CategoryId)
</div>
选择货币:
@DropDownList(“CurrencyId”,新选择列表(ViewBag.CurrencyId,“值”,“文本”))
选择游戏类型:
@DropDownList(“GameTypeId”,新选择列表(ViewBag.GameTypeId,“Value”,“Text”),新{style=“width:100px”})
@Html.ValidationMessageFor(model=>model.GameTypeId)
选择类别:
@DropDownList(“CategoryByGameType”,Enumerable.Empty(),“选择类别”)
@Html.ValidationMessageFor(model=>model.CategoryId)
以下是控制器:-
public ActionResult Create()
{
List<Currency> objCurrency = new List<Currency>();
objCurrency = db.Currencies.ToList();
List<SelectListItem> listItems = new List<SelectListItem>();
listItems.Add(new SelectListItem()
{
Value = "0",
Text = "Select Currency"
});
foreach (Currency item_Currency in objCurrency)
{
listItems.Add(new SelectListItem()
{
Value = item_Currency.CurrencyId.ToString(),
Text = item_Currency.CurrencyName
});
}
ViewBag.CurrencyId = new SelectList(listItems, "Value", "Text");
List<GameType> objgametype = objGameByGameType.GetDistinctGameTypeID();
List<SelectListItem> listItems_1 = new List<SelectListItem>();
listItems_1.Add(new SelectListItem()
{
Value = "0",
Text = "Select Game Type"
});
foreach (GameType item_GameType in objgametype)
{
listItems_1.Add(new SelectListItem()
{
Value = item_GameType.GameTypeId.ToString(),
Text = item_GameType.GameTypeName
});
}
ViewBag.GameTypeId = new SelectList(listItems_1, "Value", "Text");
return View();
}
public ActionResult Create()
{
List objCurrency=new List();
objCurrency=db.currences.ToList();
List listItems=新列表();
添加(新建SelectListItem()
{
Value=“0”,
Text=“选择货币”
});
foreach(货币项目\实物货币中的货币)
{
添加(新建SelectListItem()
{
Value=item\u Currency.CurrencyId.ToString(),
Text=项目\货币.CurrencyName
});
}
ViewBag.CurrencyId=新选择列表(列表项,“值”、“文本”);
List objgametype=objGameByGameType.GetDistinctGameTypeID();
List listItems_1=新列表();
listItems_1.Add(新建SelectListItem()
{
Value=“0”,
Text=“选择游戏类型”
});
foreach(游戏类型项目\ objgametype中的游戏类型)
{
listItems_1.Add(新建SelectListItem()
{
Value=item\u GameType.GameTypeId.ToString(),
Text=项目\u GameType.GameTypeName
});
}
ViewBag.GameTypeId=新的选择列表(列表项_1,“值”、“文本”);
返回视图();
}
下面是我的Jquery,因为我正在使用级联下拉列表
$(function () {
$("#GameTypeId").change(function () {
var theatres = "";
var gametype = "";
var mytestvar = "";
var gametypeid = $(this).val();
mytestvar += "<option value= -1 >Select Category</option>";
$.getJSON("@Url.Action("GetCategoryByGameType", "GameCombination")?gametypeid=" + gametypeid, function (data) {
$.each(data, function (index, gametype) {
// alert("<option value='" + gametype.Value + "'>" + gametype.Text + "</option>");
mytestvar += "<option value='" + gametype.Value + "'>" + gametype.Text + "</option>";
});
//alert(mytestvar);
$("#CategoryByGameType").html(mytestvar);
$("#GamebyCategory").html("<option value=0>Select Game</option>");
$("#LimitVariantByGameByGameType").html("<option value=0>Select Limit Variant</option>");
$("#StakeCategory").html("<option value=0>Select Stake Category</option>");
$("#StakeBuyInByStakeCategory").html("<option value=0>Select Stake Buy In By Stake Category</option>");
});
});
});
$(函数(){
$(“#GameTypeId”).change(函数(){
var剧院=”;
var gametype=“”;
var mytestvar=“”;
var gametypeid=$(this.val();
mytestvar+=“选择类别”;
$.getJSON(@Url.Action(“GetCategoryByGameType”、“GameCombination”)?gametypeid=“+gametypeid,函数(数据){
$.each(数据、函数(索引、游戏类型){
//警报(“+gametype.Text+”);
mytestvar+=“”+gametype.Text+“”;
});
//警报(mytestvar);
$(“#CategoryGameType”).html(mytestvar);
$(“#GamebyCategory”).html(“选择游戏”);
$(“#LimitVariantByGameType”).html(“选择限制变量”);
$(“#StakeCategory”).html(“选择桩类别”);
$(“#stakebuyinbystakegory”).html(“按股权类别选择股权买入”);
});
});
});
当提交数据时,如果在创建时出现错误,我无法返回下拉列表值响应Andras所说的内容,如果发生这种情况,则不能在.js文件中使用razor语法 您还应该熟悉调试工具,您使用的是什么浏览器?大多数都有一套很好的开发工具(有些内置),您可以在提交表单时查看页面和发送的请求 您还可以在浏览器的控制台中交互式地使用jquery四处查看
您没有显示post-create方法,也许它与该代码有关?这会让您了解您可以做什么 我建议您将ajax移到它自己的函数和
$中。每个
移到它自己的函数中,并调用$。每个
函数退出ajax函数,ajax函数退出主函数
$(function () {
$("#GameTypeId").change(function () {
var theatres = "";
var gametype = "";
var mytestvar = "";
var gametypeid = $(this).val();
mytestvar += "<option value= -1 >Select Category</option>";
$.ajax({
url: '/GameCombination/GetCategoryByGameType',
type: 'GET',
data: { "gametypeid": gametypeid},
dataType: 'json',
success: function (data) {
$.each(data, function (index, gametype) {
// alert("<option value='" + gametype.Value + "'>" + gametype.Text + "</option>");
mytestvar += "<option value='" + gametype.Value + "'>" + gametype.Text + "</option>";
});
//alert(mytestvar);
$("#CategoryByGameType").html(mytestvar);
$("#GamebyCategory").html("<option value=0>Select Game</option>");
$("#LimitVariantByGameByGameType").html("<option value=0>Select Limit Variant</option>");
$("#StakeCategory").html("<option value=0>Select Stake Category</option>");
$("#StakeBuyInByStakeCategory").html("<option value=0>Select Stake Buy In By Stake Category</option>");
},
error: function (error) {
alert(error.toString());
}
});
});
});
$(函数(){
$(“#GameTypeId”).change(函数(){
var剧院=”;
var gametype=“”;
var mytestvar=“”;
var gametypeid=$(this.val();
mytestvar+=“选择类别”;
$.ajax({
url:“/GameCombination/GetCategoryGameType”,
键入:“GET”,
数据:{“gametypeid”:gametypeid},
数据类型:“json”,
成功:功能(数据){
$.each(数据、函数(索引、游戏类型){
//警报(“+gametype.Text+”);
mytestvar+=“”+gametype.Text+“”;
});
//警报(mytestvar);
$(“#CategoryGameType”).html(mytestvar);
$(“#GamebyCategory”).html(“选择游戏”);
$(“#LimitVariantByGameType”).html(“选择限制变量”);
$(“#StakeCategory”).html(“选择桩类别”);
$(“#stakebuyinbystakegory”).html(“按股权类别选择股权买入”);
},
错误:函数(错误){
警报(error.toString());
}
});
});
});
您必须为View.cs中的dropdownlist
创建一个对象,然后分配该值。之后,当您尝试获取下拉列表
值时,必须使用ViewBag标题对象名称,然后使用dropdownlist值
下面的代码为radiobutton指定。您可以将其更改为下拉列表
@model MVC_Compiler.Models.UserProgram
@{
ViewBag.Title = "UserProgram";
}
<table style="background-color: #FBF9EF;">
<colgroup>
<col style="width: 20%;">
<col style="width: 80%;">
</colgroup>
<tr>
<td style="vertical-align: text-top">
@Html.RadioButtonFor(up => up.Language, "C")C<br />
@Html.RadioButtonFor(up => up.Language, "C++")C++<br />
@Html.RadioButtonFor(up => up.Language, "C#")C#<br />
@Html.RadioButtonFor(up => up.Language, "VB")VB<br />
@Html.RadioButtonFor(up => up.Language, "Java")Java<br />
@Html.RadioButtonFor(up => up.Language, "Perl")Perl<br />
@Html.HiddenFor(up => up.Language, new { @id = "Select_Language" })
@Html.HiddenFor(up => up.UserName, new { @id = "UserName" })
</td>
其中userProgram是ViewBag Title。好的,我的第一个注意:因为您将视图和javascript代码分开,所以我怀疑JS是在一个单独的文件中。在这种情况下,这不起作用:
(“@Url.Action(“GetCategoryByGameType”,“GameCombination”)
如果不能在JS文件中使用MVC帮助程序方法,则必须显式指定Url。
userProgram.Language