Razor MVC获取SQL语句

时间:2016-06-30 22:40:03

标签: c# asp.net-mvc asp.net-mvc-4 razor

我正在尝试使用剃刀提交一个简单的表单,需要

<select>
   <option id=""> //this is what i neeed to perform an insert >
   </option>
</select>

我的剃刀语法如下:

@Html.DropDownListFor(model => model.aPracticar.Value, actividades , "Seleccione la actividad" ,new { @class="form-control" })

由于我需要执行sql连接并且我不知道如何通过剃刀获取该id,因此该值本身不会执行。任何帮助将不胜感激。谢谢!

编辑:

Sory的最新更新。找到一个相对简单的解决方法,因为我必须使用id而不是Javascript函数的选择列表中的值。我完全清楚这可能不是剃刀的正确用法,但与重写整个模型/视图/控制器相比,它被证明是有效的

    <div class="editor-label">
     @Html.LabelFor(model => model.aPracticar.Value, "Actividad")
    </div>
    <div class="editor-field">
        <select class="form-control" id="aPracticar_Value" >                
            <option value="">Seleccione la actividad...</option>
             @foreach (var actividad in actividades)
             {  
                <option id="@actividad.idDeporte" value="@actividad.Value">
                          @actividad.Text</option>

         }                                   
    </select>
     @Html.HiddenFor(u => u.aPracticar.idDeporte)
     <br />
 </div>

但是,我将以下答案中的一个标记为正确,因为它是Razor预期用途的一个示例。再次感谢大家的有益评论。

2 个答案:

答案 0 :(得分:1)

如果您的实体具有来自其他实体的外键并且您希望通过razor在DropDown中显示所有其他实体值,则可以首先在您的操作中创建一个selectList,如:

var aPracticar=_modelService.getAll();   

ViewBag.Parcticar=new SelectList(aPracticar,"ID","Title");

然后通过viewBag将此selectList发送到您的视图,并在视图中使用如下:

@Html.DropDownListFor(model => model.aPracticar,(SelectList)ViewBag.Parcticar)

它可以在你的html中使用键和值创建selectList,键是aPracticar的Id,值是你想要显示为selectList的标题。

/ *编辑了错误的评论而不是我原来的帖子,对不起! * /

答案 1 :(得分:0)

要通过<Button Text="{Binding Name}" x:Name="BtnClub" AbsoluteLayout.LayoutBounds="100, 25, 100, 25" Clicked="OnListClubsClicked" TextColor="Black" VerticalOptions="FillAndExpand" CommandParameter="{Binding Id}" /> async void OnListClubsClicked(object sender, EventArgs e) { Button btn = (Button) sender; int clubid = (int) btn.CommandParameter; // pass the clubid to your Detail page await Navigation.PushAsync(new DetailedClub(clubid)); } 帮助程序插入下拉列表选项,请从预定义模型构建DropDownList或创建List<SelectListItem>构造函数:

SelectList

它们都将大致翻译为HTML:

// assume Model.Selecciones is an IEnumerable option list
@Html.DropDownListFor(model => model.aPracticar, "actividades", new SelectList(Model.Selecciones), new { @class="form-control" })

// assume Model.ListaSelecciones is a SelectListItem option list
@Html.DropDownListFor(model => model.aPracticar, "actividades", Model.ListaSelecciones, new { @class="form-control" })

如果要构建SelectListItem列表:

<select class="form-control" name="aPracticar">
    <option value="Valor">Texto</option>
    <!-- other option values -->
</select>

但是,如果您倾向于直接绑定选择列表项以进行查看,请首先在模型上提供文本值对。

从下拉列表中选择的值将自动插入到表单提交的Model.ListaSelecciones = new List<SelectListItem>(); lista.Add(new SelectListItem() { Text = "Texto", Value = "Valor" } // example for adding option item to drop down list 属性中。

附录:默认情况下,DropDownList生成的选项标记不包含“id”属性。您需要使用与此类似的扩展选项标记属性制作自定义HTML帮助程序:

model.aPracticar

请阅读https://msdn.microsoft.com/en-us/library/system.web.mvc.html.selectextensions.dropdownlist(v=vs.118).aspx以正确使用DropDownListFor模型绑定。