如果您想了解asp.net–使用HTML’readonly=“readonly”’与JavaScript’元素的奇怪行为.readOnly=true;’的知识,那么本篇文章将是您的不二之选。同时我们将
如果您想了解asp.net – 使用HTML’readonly =“readonly”’与JavaScript’元素的奇怪行为.readOnly = true;’的知识,那么本篇文章将是您的不二之选。同时我们将深入剖析#javascript# window.onload 和 $(document).ready()、asp.net-mvc – ReadOnly(true)是否与Html.EditorForModel一起使用?、ASP.NET中readonly与const的区别详解、ASP.NET中TextBox控件设立ReadOnly="true"后台取不到值的各个方面,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- asp.net – 使用HTML’readonly =“readonly”’与JavaScript’元素的奇怪行为.readOnly = true;’
- #javascript# window.onload 和 $(document).ready()
- asp.net-mvc – ReadOnly(true)是否与Html.EditorForModel一起使用?
- ASP.NET中readonly与const的区别详解
- ASP.NET中TextBox控件设立ReadOnly="true"后台取不到值
asp.net – 使用HTML’readonly =“readonly”’与JavaScript’元素的奇怪行为.readOnly = true;’
所以我在Web应用程序中完成了一些增强功能,可以自动插入数据.用户填写了一些文本框,其中的其他文本框具有自动计算的值.接收自动计算值的文本框必须是readOnly以防止用户更改,但不能禁用或不会在回发时提交.这些文本框中的每一个旁边都有一个复选框,因此用户可以有意识地检查它以使字段可写,从而允许它们覆盖插值.
浏览器:IE 7(不确定这在其他人中的行为)
问题
使用JavaScript设置文本框的readOnly属性时,文本框中的值将以以下形式提交:我可以在服务器端(ASP.NET)使用myTextBox.Text查看它,它位于Request.Form(“myTextBox”)中.
如果我在我的< asp:TextBox />上设置ReadOnly =“true”在不使用JavaScript方法的情况下,文本框中的值不能从myTextBox.Text中获取(我假设它从未进入ViewState),但它是以表格形式提交的:Request.Form(“myTextBox” “)有一个价值.
我的问题
到底他妈发生了什么?这是设计的吗?这是一个浏览器问题吗?我找到了一个bug吗?令人讨厌的是,我必须有一些额外的JavaScript,以便在页面加载时最初禁用文本框的可写性,以使我的应用程序正常工作.
谢谢!
解决方法
MyControl.Attributes.Add("readOnly","readOnly")
#javascript# window.onload 和 $(document).ready()
window.onload
当浏览器中所有的资源内容(DOM结构、文本内容、图片...)都加载完成,触发load事件。
- 它是基于DOM0事件绑定完成的。所以在同一个页面中只能给它绑定一个方法(绑定多个将以最后一个绑定的为主)
- 如果想在一个页面中使用多次,我们应该是基于DOM2事件绑定。
function fn1(){
//第一件事
}
function fn2(){
//第二件事
}
window.addEventListener(''load'',fn1,false);
window.addEventListener(''load'',fn2,false);
$(document).ready()
$(function(){}) 或者 $(document).ready(function(){})
- 当文档中的DOM结构加载完成就会被触发执行,而且在同一个页面中可以使用多次。
- JQ中提供的方法,JQ是基于DOMContentLoaded这个事件完成这个操作的
- JQ中的事件绑定都是基于DOM2事件绑定完成的
- 但是DOMContentLoaded在IE6~8下使用
attachEvent也是不支持的,JQ在IE6~8中使用的是readystatechange事件处理的。
asp.net-mvc – ReadOnly(true)是否与Html.EditorForModel一起使用?
模型:
public class Product { [ReadOnly(true)] public int ProductID { get; set; } public string Name { get; set; } }
视图:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcApplication4.Models.Product>" %> <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> Home Page </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <%= Html.EditorForModel() %> </asp:Content>
控制器:
public class HomeController : Controller { public ActionResult Index() { return View(new Product { ProductID = 1,Name = "Banana" }); } }
结果如下:
我期望通过ReadOnly(true)属性不能编辑ProductID属性.这支持吗?如果没有,有没有办法提示ASP.NET MVC我的模型的某些属性是只读的?我不想通过[ScaffoldColumn(false)]隐藏ProductID.
解决方法
对于自定义模板〜/ Views / Home / EditorTemplates / Product.ascx:
<%@ Control Language="C#" Inherits="ViewUserControl<Product>" %> <%: Html.LabelFor(x => x.ProductID) %> <%: Html.TextBoxFor(x => x.ProductID,new { @readonly = "readonly" }) %> <%: Html.LabelFor(x => x.Name) %> <%: Html.TextBoxFor(x => x.Name) %>
另请注意,默认模型绑定程序不会使用[ReadOnly(false)]将值复制到属性中.此属性不会影响默认模板呈现的UI.
ASP.NET中readonly与const的区别详解
const是一个修饰常量的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性,它在程序设计中有着非常重要的作用,给开发人员带来非常方便的应用。
下面我们来建一个控制台应用程序作测试:
public class Test { public readonly string name = "George"; public const string coname = "ABC Company LLC"; public Test(string name) { // readonly 修饰的变量能且只能在 Constructor(构造函数)中被改变 this.name = name; } public string _name { get { return name; } //不可以对readonly修饰的变量进行Set操作 //set //{ // name = value; //} } } class Program { static void Main(string[] args) { Test obj = new Test("Test"); //readonly的变量不可以修改值,只能在 Constructor(构造函数)中被改变 //obj.name = "New Value"; Console.WriteLine(obj.name); //const 的变量直接通过对象访问,不需要实例化 Console.WriteLine(Test.coname); Console.Read(); } }
以前一直以为 readonly 与 const 的作用是一样的,现在明白它们之间的区别了,不知道您是否也明白了呢?希望大家有所收获吧!
- 深入探讨C#中的const、readonly关键字
- C#基础知识系列八const和readonly关键字详细介绍
- c#.net中const和readonly的区别
- C#中 const 和 readonly 的不同
- C#中const 和 readonly 修饰符的用法详解
ASP.NET中TextBox控件设立ReadOnly="true"后台取不到值
SP.NET中TextBox控件设置ReadOnly="true"H或Enabled=false后台取不到值 当TextBox设置了ReadOnly="true" 后,要是在前台为控件添加了值,后台是取不到的,值为“空” 。 方法一:不设置ReadOnly属性,通过οnfοcus=this.blur()来模拟,如下: <asp:TextBox ID="TextBox1" runat="server" οnfοcus=this.blur()></asp:TextBox> 方法二:设置了ReadOnly属性后,通过Request来取值,如下: 前台代码: <asp:TextBox ID="TextBox1" runat="server" ReadOnly="True" ></asp:TextBox> 后台代码: string Text = Request.Form["TextBox1"].Trim(); 方法三:在Page_Load()正设置文本框的只读属性,在前台不设置。就能正常读取,如下: protected void Page_Load(object sender,EventArgs e) { if (!Page.IsPostBack) { TextBox1.Attributes.Add("readonly","true"); } }
今天关于asp.net – 使用HTML’readonly =“readonly”’与JavaScript’元素的奇怪行为.readOnly = true;’的讲解已经结束,谢谢您的阅读,如果想了解更多关于#javascript# window.onload 和 $(document).ready()、asp.net-mvc – ReadOnly(true)是否与Html.EditorForModel一起使用?、ASP.NET中readonly与const的区别详解、ASP.NET中TextBox控件设立ReadOnly="true"后台取不到值的相关知识,请在本站搜索。
本文标签: