控制器未被选中或返回第二视图剃刀

时间:2015-12-18 21:35:32

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

我有一个下拉列表,巫婆用户选择soemthing然后它应该将选定的选项发送到我的控制器并将其保存在一个视图包然后我的控制器返回一个新视图,在新视图中我的表体应该使用视图包我的模型中的语句的项目,但由于某种原因,当用户选择该选项没有任何反应..控制器不会触发新视图或传递选定的选项 这是我的控制器



offset




还有我的观点:



namespace Arpon.Web.Brain.Pos.Controllers
{
    public class HomePosController : BaseController
    {
        //
        // GET: /HomePos/
        public ActionResult Index()
        {
            var db = new ArponClientPosContext();

            return View("~/Views/HomePos/Index.cshtml", db.Pos.ToList());
           
        }

        public ActionResult SimpleInterest(String pdvlist)
        {
            var db = new ArponClientPosContext();
            SimpleInterestModel model = new SimpleInterestModel();

            ViewBag.key1 = "0";
                ViewBag.key1 = pdvlist;
                return View("~/Views/HomePos/IndexF.cshtml", db.Pos.ToList());
        }

    }
}




我做错了什么? 任何帮助都将是apreciated

1 个答案:

答案 0 :(得分:0)

重载Html.BeginForm()将呈现一个表单标记,其action属性值设置为当前操作方法。这意味着如果您从Index控制器的HomePos操作执行此代码,Razor将生成以下标记

<form action="/Home/Index" method="post">   
  <!-- Other form elements-->
</form>

由于您希望将其发布到其他操作方法,因此您可以尝试使用此overload

public static MvcForm BeginForm(
    this HtmlHelper htmlHelper, string actionName,  string controllerName
)

将您的观看代码更新为

@using (Html.BeginForm("SimpleInterest","HomePos"))
{
  <select id="pdvlist" name="pdvlist" class="ctl-source">
      <option value="No">No</option> 
  </select>
  <input type="submit" value="Actualizar" />
}

现在在您的代码中,我不知道onDocExtendedLoad是什么。但看起来你正试图在change事件上执行run方法。在run方法中,您将向下拉列表每次注册一个更改事件处理程序。我不确定这是你真正想做的事情。如果您只是在用户更改下拉列表时尝试获取所选的选项值,则可以使用一些不显眼的JavaScript来执行此操作。

@section Scripts
{
  <script>
    $(function(){  
       $('select[name=pdvlist]').change(function (e) {
          var selectedVal = $(this).val();
          alert(selectedVal);
          // If you want to submit the form
          // $(this).closest("form").submit();
       });
    });
</script>
}