Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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# 如何从aspx切换到cshtml_C#_Jquery_Angularjs_Asp.net Mvc_Razor - Fatal编程技术网

C# 如何从aspx切换到cshtml

C# 如何从aspx切换到cshtml,c#,jquery,angularjs,asp.net-mvc,razor,C#,Jquery,Angularjs,Asp.net Mvc,Razor,在我以前的应用程序中,我使用Default.aspx作为ui路由器的布局页面。页面底部是: <form runat="server" style="visibility: collapse"> <asp:HiddenField ID="mkt" runat="server" /> <asp:HiddenField ID="id" runat="server" /> </form> 两者都是在模式启动时从映射应用程序传递的字符串值

在我以前的应用程序中,我使用Default.aspx作为ui路由器的布局页面。页面底部是:

 <form runat="server" style="visibility: collapse">
    <asp:HiddenField ID="mkt" runat="server" />
    <asp:HiddenField ID="id" runat="server" />
</form>
两者都是在模式启动时从映射应用程序传递的字符串值。我已经做了搜索,这似乎是一个常见的问题。这就是我正在努力实现的目标

Index.cshtml

@model SubjectProperty.Web.Controllers.MKT

@Html.HiddenFor(x => x.mkt, new { htmlAttributes = new { @id = "mkt" } })
@Html.HiddenFor(x => x.id, new { htmlAttributes = new { @id = "id" } })
在我的家庭控制器

  public class MKT
{
    public string mkt { get; set; }
    public string id { get; set; }
}

public class HomeController : Controller
{
    public ActionResult Index(MKT m)
    {
        if (m == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }

        var model = new MKT();

        model.id = m.id;
        model.mkt = m.mkt;

        return View(model);
    }
  }
现在当我手动插入

本地主机:1323/?MKT=wet&Id=dd23e460-e319-47c9-b9c4-rr5r6798e56t

它拿起它,开始工作。我需要在这里做什么

更新,意识到razor hiddenFor没有从控制器获取值。这是一个截图。

尝试将隐藏的表单字段包装到表单中:

using(Html.BeginForm()
{
  @Html.HiddenFor(x => x.mkt, new { htmlAttributes = new { @id = "mkt" } })
  @Html.HiddenFor(x => x.id, new { htmlAttributes = new { @id = "id" } })
}
并使用[HttpPost]属性标记您的方法:

 [HttpPost]
 public ActionResult Index(MKT model)
 {
 }  

如果您想使用更高级的方案,请考虑自定义模型绑定。

将HydeNodes封装在某种形式(HTML、Ajax……)中,并在您的Controller方法的签名中获得表单元素集合:<代码>公共活动结果索引(FuffCytoSy收藏)


并在方法前面加上
[AcceptVerbs(HttpVerbs.Post)]

在首次启动应用程序时,您如何调用操作。我使用的是默认的asp.net mvc应用程序。您试图解决的问题到底是什么?您收到的特定URL是否有错误消息?没有错误消息。索引操作中的模型为空。当我在浏览器导航中手动插入字符串时,模型会带有值。可能我仍然缺少一些东西,但我仍然看不到问题所在。如果您只是使用URL localhost:1323/,那么您希望模型值来自何处?Post属性会导致它不加载任何内容。在表单中包装它和不包装它做的事情是一样的。您能否再多展示一下如何使用FormCollection@texas697然后使用表单元素的Id(从视图中)访问集合:DateTime.TryParse(_collection[“txtxtime”],out newTime);或者如果(_collection[“txtTag”].IndexOf(“”<0)
 [HttpPost]
 public ActionResult Index(MKT model)
 {
 }