草庐IT

c# - MVC Razor 隐藏输入和传递值

coder 2023-07-13 原文

我很确定我在这里做错了什么。在过去的 2 个月里,我们一直在使用 MVC 和 Razor 开发 Web 应用程序,但我们从未想过使用表单元素。现在已经对母版页和子页做了很多工作,这意味着要重构我们的大部分代码以使用表单元素,这将导致页面上出现多个表单元素。

除此之外,在 Asp.Net 中,如果我想访问后面的 C# 代码中的任何控件,我可以只给它一个 ID="SomeID"和一个 RUNAT="SERVER"。然后在我后面的代码中我可以设置它的值和属性。

当我在 Razor 中执行此操作时,我们使用如下行:

 <input id="hiddenPostBack" runat="server" type="hidden" />

为什么我不能在 Controller 中访问它?如果这是第一次加载页面,我想检测回发并将值设置为 false,如果不是,则将值设置为 true。然后基于此,我将在服务器端或客户端读取它并执行一些操作。

我真正的问题是,如果我没有表单元素,我该如何在服务器端和客户端“做某事”。我的印象是,如果我想将值从客户端传递到服务器并返回,最简单的方法是使用隐藏输入。但我只是不知道如何使用 MVC3 和 Razor 来完成此任务。

预先感谢您的帮助。

最佳答案

从 WebForms 到 MVC 的转变需要逻辑和大脑过程的彻底改变。您不再与服务器端和客户端的“表单”交互(事实上,即使使用 WebForms,您也没有与客户端交互)。您可能只是在那里混淆了一些想法,因为对于 WebForms 和 RUNAT="SERVER",您只是在与网页的构建进行交互。

MVC 有点类似,因为你在构建模型时有服务器端代码(你需要构建用户将看到的数据),但是一旦你构建了 HTML,你需要理解服务器之间的链接并且用户不再存在。他们有一个 HTML 页面,仅此而已。

因此您构建的 HTML 是只读的。您将模型传递给 Razor 页面,该页面将构建适合该模型的 HTML。

如果你想要一个隐藏的元素,它根据这是否是第一个 View 来设置 true 或 false,你需要在你的模型中使用一个 bool 值,如果它是对后续操作的响应,则在 Action 中将其设置为 True .这可以通过根据请求是 [HttpGet] 还是 [HttpPost] 采取不同的操作来完成(如果这适合于您设置表单的方式:首次访问使用 GET 请求,如果提交表单则使用 POST 请求)。

或者,模型可以在创建时设置为 True(这将是您第一次访问该页面),但是之后您检查值是 True 还是 False(因为 bool 默认值实例化时为 False)。然后使用:

@Html.HiddenFor(x => x.HiddenPostBack)

在您的表单中,这将隐藏一个 True。当表单回发到您的服务器时,模型现在将该值设置为 True。

很难提供比这更多的建议,因为您的问题并未具体说明为什么您要这样做。阅读一本关于从 WebForms 迁移到 MVC 的好书可能很重要,例如 Steve Sanderson 的 Pro ASP.NET MVC。

关于c# - MVC Razor 隐藏输入和传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11325616/

有关c# - MVC Razor 隐藏输入和传递值的更多相关文章

  1. c# - 如何在 ruby​​ 中调用 C# dll? - 2

    如何在ruby​​中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL

  2. C# 到 Ruby sha1 base64 编码 - 2

    我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha

  3. ruby - rails 3 redirect_to 将参数传递给命名路由 - 2

    我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use

  4. ruby-on-rails - 如何生成传递一些自定义参数的 `link_to` URL? - 2

    我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些

  5. ruby - 在 Ruby 中按名称传递函数 - 2

    如何在Ruby中按名称传递函数?(我使用Ruby才几个小时,所以我还在想办法。)nums=[1,2,3,4]#Thisworks,butismoreverbosethanI'dlikenums.eachdo|i|putsiend#InJS,Icouldjustdosomethinglike:#nums.forEach(console.log)#InF#,itwouldbesomethinglike:#List.iternums(printf"%A")#InRuby,IwishIcoulddosomethinglike:nums.eachputs在Ruby中能不能做到类似的简洁?我可以只

  6. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  7. ruby - 如何将 Puma::Configuration 传递给 Sinatra? - 2

    这是我的网络应用:classFront我是这样开始的(请不要建议使用Rack):Front.start!这是我的Puma配置对象,我不知道如何传递给它:require'puma/configuration'Puma::Configuration.new({log_requests:true,debug:true})说真的,怎么样? 最佳答案 配置与您运行的方式紧密相关puma服务器。运行的标准方式puma-pumaCLI命令。为了配置puma配置文件config/puma.rb或config/puma/.rb应该提供(参见examp

  8. ruby - 鸭子输入字符串、符号和数组的优雅方式? - 2

    这是针对我无法破坏的现有公共(public)API,但我确实希望对其进行扩展。目前,该方法采用字符串或符号或任何其他在作为第一个参数传递给send时有意义的内容我想添加发送字符串、符号等列表的功能。我可以只使用is_a吗?数组,但还有其他发送列表的方法,这不是很像ruby​​。我将调用列表中的map,所以第一个倾向是使用respond_to?:map。但是字符串也会响应:map,所以这行不通。 最佳答案 如何将它们全部视为数组?String的行为与仅包含String的Array相同:deffoo(obj,arg)[*arg].eac

  9. jquery - 如何将 AJAX 变量从 jQuery 传递到他们的 Controller ? - 2

    我有一个电子邮件表格。但是我正在制作一个测试电子邮件表单,用户可以在其中添加一个唯一的电子邮件,并让电子邮件测试将其发送到该特定电子邮件。为了简单起见,我决定让测试电子邮件通过ajax执行,并将整个内容粘贴到另一个电子邮件表单中。我不知道如何将变量从我的HAML发送到我的Controllernew.html.haml-form_tagadmin_email_blast_pathdoSubject%br=text_field_tag'subject',:class=>"mass_email_subject"%brBody%br=text_area_tag'message','',:nam

  10. Ruby隐藏与覆盖 - 2

    我刚刚了解到,在Java中,覆盖和隐藏之间是有区别的(静态方法是隐藏的,而不是覆盖),这意味着Java使用早期绑定(bind)和后期绑定(bind)。是否有与方法隐藏类似的东西,或者它只是具有方法重写? 最佳答案 Java具有三种不同的“方法”:实例方法,静态方法和构造函数。Ruby只有一个:实例方法。在Java中,静态方法的行为必须不同于实例方法,因为类不是对象。它们没有类,因此也没有父类(superclass),因此没有要覆盖的内容。在Ruby中,类与其他任何对象一样都是对象,它们具有一个类,该类可以具有父类(superclas

随机推荐