Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从控制器MVC获取选定的下拉值_C#_Jquery_Asp.net Mvc_Razor - Fatal编程技术网

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