【问题标题】:calling mvc function from razor html从 razor html 调用 mvc 函数
【发布时间】:2016-10-18 12:18:21
【问题描述】:

我正在使用 MVC,我对从我的控制器调用函数有疑问。

这是我要调用的函数:

public ActionResult Index(string continent)
{
   try
   {
      return View(db.Factories.ToList());
   }
   catch (Exception e)
   {
      string s = e.InnerException.Message;
   }

    return View( new FactoriesWController().GetFactoriesOnContinent(continent));
 }

我想从cshtml页面调用这个函数,确切地说,这是下拉列表。

我想使用选定项更改来调用函数并将选定项用作函数参数。这是 Razor 代码的下拉列表:

@Html.DropDownList("Region", new SelectList(new List<string>() {"Europe", "Asia", "North America", "South America", "Africa", "Australia", "World"}),
                    "Select Region",new { @class = "form-control" })

<input type="submit" />

所以我想使用下拉列表中的选定项,然后使用选定项作为参数调用该函数。我从来没有用 HTML 编码,任何帮助表示赞赏。

【问题讨论】:

  • 您要使用该操作方法的响应重新加载页面吗?
  • 更改下拉列表的名称以匹配参数名称 - @Html.DropDownList("continent", ...) 并使用 FormMethod.Get 包装在表单中并提交表单或使用 ajax 将所选值发布到方法留在同一页面并更新 DOM
  • @Shyju,-您提醒&lt;button&gt;.val(),而不是&lt;select&gt; :)
  • 是的。你是对的@StephenMuecke 我不知道val() 在没有值的情况下返回文本。看到这就是参与 SO 的美妙之处。你每天都会学到一些或其他的东西。谢谢。
  • @Shyju,以及来自specsvalue属性为元素提供了一个值。选项元素的值是 value 内容属性的值,如果有,或者如果没有,则为元素的文本 IDL 属性的值。

标签: html asp.net asp.net-mvc razor


【解决方案1】:

将您的表单元素(选择和提交)放在form 标记内。表单的action 属性应指向您的操作方法名称。重命名您的 SELECT 元素名称属性值以匹配您的操作方法参数名称。

您可以使用Html.BeginForm 来生成表单标签。

@using (Html.BeginForm("Index", "home"))
{
    @Html.DropDownList("continent",
        new SelectList(new List<string>() 
      {"Europe", "Asia", "North America", "South America", "Africa", "Australia", "World"}),
        "Select Region",
        new {@class = "form-control"})

    <input type="submit"/>
}

假设您的 Index 操作方法在 HomeController 内部。

现在,当用户从 SELECT 元素中选择一个选项并单击提交时,该选择将提交给 Index 操作方法,并且所选选项将在 continent 参数中可用。

【讨论】:

  • Html.BeginForm("Index", "Home", FormMethod.Get)
  • Post 也应该可以工作(即使操作方法是 GET 操作)。为什么要指定 Get ?
  • OP 没有 [HttpPost] 所以假设它是一个 GET
  • 是的。但是您可以将 POST 类型的表单提交到 GET 操作
  • @Shyju 谢谢你的回答!我无法投票,因为我的声望还不到 15 岁。
猜你喜欢
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 2011-10-18
  • 2015-06-05
  • 2011-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多