如何获取剃须刀中单选按钮的值以将其作为参数传递给操作?

Posted

技术标签:

【中文标题】如何获取剃须刀中单选按钮的值以将其作为参数传递给操作?【英文标题】:How to get the value of a radio button in razor to pass it as a parameter to an action? 【发布时间】:2019-05-23 11:31:09 【问题描述】:

在一个视图中,我有两个单选按钮:

 @html.RadioButtonFor(model => model.TipoVP, new String("VP_A".ToCharArray()), new  @checked = "checked" )
 <span class="custom-control-label">Partial View A</span>
 @Html.RadioButtonFor(model => model.TipoVP, new String("VP_B".ToCharArray()))
 <span class="custom-control-label">Partial View B</span>  

控制器的动作是这样的:

 public ActionResult GetVistaParcial(string tipov)
 
    if (tipov == null || tipov == "VP_A")
       return PartialView("_PartialView_A");
    else
       return PartialView("_PartialView_B");
 

并调用控制器操作以根据所选单选按钮加载部分视图或另一个

 @Html.Action("GetVistaParcial", "miControlador", new  tipov = "the value of checked RadioButton"  )  

单选按钮更改事件的脚本为:

 $("[name=TipoVP]").on('change', function () 
    var $rb = $(this);
    $.ajax(
       url: '/miControlador/GetVistaParcial/',
       data:  tipov: $rb.val() ,
       success: function (respuesta) 
          $("#vistaparcial").html(respuesta);
       
    );
 );

如何将选中的单选按钮的值作为参数传递给操作? 它必须在执行 GET 和 POST 时工作

【问题讨论】:

能否请您出示您的脚本以致电GetVistaParcial 我将脚本添加到问题中。谢谢 我已经在我这边尝试了您的代码,并且没有更改它按预期工作的任何内容。您是否在 get 方法中为您的模型创建了一个对象? 是的。但问题是当从 POST 返回时,“GetVistaParcial”方法的“tipov”参数始终为空。如果我使用选定的局部视图 B 启动 POST,当我返回时,会出现局部视图 A。 但是我收到了 tipovVP_AVP_B 相对于在您的 GetVistaParcial 操作方法中单击的单选按钮。 【参考方案1】:

我想知道你是否想转到另一个页面。

@using (Html.BeginForm("GetVistaParcial", "Home"))

  @Html.RadioButtonFor(model => model.TipoVP, new 
     string("VP_A".ToCharArray()), new  @checked = "checked" )
         <span class="custom-control-label">Partial View A</span>

  @Html.RadioButtonFor(model => model.TipoVP, new 
     String("VP_B".ToCharArray()))
       <span class="custom-control-label">Partial View B</span> 

  <input type="submit" value="submit" />

你不需要这样称呼:

@Html.Action("GetVistaParcial", "miControlador", new  tipov = "the value of checked RadioButton"  ) 

你的 Action 应该收到模型:

public IActionResult GetVistaParcial(YourModel model)

   return View();

【讨论】:

如果我尝试这样做,我会在加载视图时收到此错误。 System.NullReferenceException: 'Object reference not set to an instance of an object.' 你应该初始化你的模型的值public IActionResult Index() var myModel= new MyModel(); return View(myModel); 【参考方案2】:

修改这一行数据:tipov:$rb.val()为

       data: JSON.stringify( tipov: $rb.val() ),

向网络服务器发送数据时,数据必须是字符串,而 JSON.stringify 方法将 javascript 对象转换为字符串。

感谢

【讨论】:

Obaid,这对我不起作用。当我进行修改时,单击rb时局部视图不会改变。

以上是关于如何获取剃须刀中单选按钮的值以将其作为参数传递给操作?的主要内容,如果未能解决你的问题,请参考以下文章

如何最好地将 CString 转换为 BSTR 以将其作为“in”参数传递给 COM 方法?

如何在一个条目中将RGB作为单独的参数传递给函数

如何将相同的事件侦听器分配给 Vue.js 中动态创建的按钮并将对象的值作为参数传递给它?

如何将对象属性作为参数传递给 Razor 组件

如何使用jquery获取表中单选按钮的值

将视图作为参数传递给按钮,将其作为模态触发