在JavaScript中使用这种构造有什么限制。在我的代码后面我有财产,并得到它有相当复杂的逻辑。它调用其他方法等等,尽管在调试时它显示返回良好的值,但我得到的结果是空字符串。我想知道我能做什么,因为这种类型的代码在渲染方法中运行。JavaScript <%= MyProperty%>
0
A
回答
2
使用该方法呈现JavaScript没有任何限制。你只需要确保你的属性可以在各种场景下使用,比如标准的HTTP获取,回传等等。当然,你必须确保该属性被正确地转义/按照需要进行了JavaScript编码,即如果它中包含引号的字符串值等
0
我用这一切的时候...
我也建议做如下:
this.txtProjectName = $('#<%=this.txtProjectName.ClientID %>');
...这样txtProjectName
是一个jQuery对象从一开始。
下面是一个广泛的例子:
请注意一些在下面的类中调用的是这里没有显示的对象。
<script type="text/javascript">
var projectDialog = (function($) {
var publicInstances = {};
// ***********************
// form
publicInstances.form = form;
function form(controller) {
/// <summary></summary>
var self = this;
/// <summary></summary>
this.controller = controller;
/// <summary></summary>
this.validationController = null;
this.hidAsOf = $('#<%=this.hidAsOf.ClientID %>');
this.hidProjectKey = $('#<%=this.hidProjectKey.ClientID %>');
this.hidMode = $('#<%=this.hidMode.ClientID %>');
this.ddlClients = $('#<%=this.ddlClients.ClientID %>');
this.txtProjectName = $('#<%=this.txtProjectName.ClientID %>');
this.txtProjectNumber = $('#<%=this.txtProjectNumber.ClientID %>');
this.txtProjectManager = $('#<%=this.txtProjectManager.ClientID %>');
this.txtProjectDescription = $('#<%=this.txtProjectDescription.ClientID %>');
this.ddlEMREProductivityCurve = $('#<%=this.ddlEMREProductivityCurve.ClientID %>');
this.txtStartDate = $('#<%=this.txtStartDate.ClientID %>');
this.txtEndDate = $('#<%=this.txtEndDate.ClientID %>');
this.txtEngineeringHours = $('#<%=this.txtEngineeringHours.ClientID %>');
this.txtDirectHours = $('#<%=this.txtDirectHours.ClientID %>');
this.txtIndirectHours = $('#<%=this.txtIndirectHours.ClientID %>');
this.txtOtherHours = $('#<%=this.txtOtherHours.ClientID %>');
this.txtARRThreshold = $('#<%=this.txtARRThreshold.ClientID %>');
this.txtAppropriationHours = $('#<%=this.txtAppropriationHours.ClientID %>');
this.txtAppropriationDollars = $('#<%=this.txtAppropriationDollars.ClientID %>');
this.ibtnSaveProject = $('#<%=this.ibtnSaveProject.ClientID %>');
this.imgClose = $('#<%=imgClose.ClientID %>');
this.imgStartDate = $('#<%=imgStartDate.ClientID %>');
this.imgEndDate = $('#<%=imgEndDate.ClientID %>');
this.disabledCssClass = "textbox-locked";
/// <summary></summary>
this.initialize = function() {
var context = $(self.controller.container);
var contentArea = $(self.controller.contentArea, context);
self.validationController = new validation.controller(contentArea);
if(self.controller.readOnly == true)
self.disableForm();
/// <summary>Set defaults.</summary>
self.ddlClients.attr('disabled', 'disabled');
/// <summary>Register click events.</summary>
self.ibtnSaveProject.click(function() { self.controller.save(); });
self.imgClose.click(function() { self.close(); });
/// <summary>Register rounders.</summary>
$('input.rounder-decimal', context).numericRounder();
/// <summary>Register keypress events.</summary>
$('input.rounder-decimal', context).keypress(function(e) {
return enforceValueAsDollar(e, this.val);
});
/// <summary>Register change events.</summary>
$('input.rounder-decimal', context).change(function() {
var element = $(this);
var value = element.extractValue();
var formatted = $.formatNumber(value.toString(), { format: "#,###.00", locale: "us" });
if (isNaN(value))
formatted = 0;
element.val(formatted);
if (!element.is('.textbox-total'))
self.calculateAppropriationHours();
});
};
/// <summary></summary>
this.disableStartDate = function(){
self.imgStartDate.remove();
self.txtStartDate.removeClass(self.disabledCssClass);
self.txtStartDate.addClass('TextBoxLocked');
};
/// <summary></summary>
this.disableForm = function() {
self.disableStartDate();
self.ddlEMREProductivityCurve.attr('disabled', true);
self.txtProjectName.attr('disabled', true);
self.txtProjectNumber.attr('disabled', true);
self.txtProjectManager.attr('disabled', true);
self.txtProjectDescription.attr('disabled', true);
self.txtEndDate.attr('disabled', true);
self.txtEngineeringHours.attr('disabled', true);
self.txtDirectHours.attr('disabled', true);
self.txtIndirectHours.attr('disabled', true);
self.txtOtherHours.attr('disabled', true);
self.txtARRThreshold.attr('disabled', true);
self.txtAppropriationHours.attr('disabled', true);
self.txtAppropriationDollars.attr('disabled', true);
self.txtProjectName.addClass(self.disabledCssClass);
self.txtProjectNumber.addClass(self.disabledCssClass);
self.txtProjectManager.addClass(self.disabledCssClass);
self.txtProjectDescription.addClass(self.disabledCssClass);
self.txtEndDate.addClass(self.disabledCssClass);
self.txtEngineeringHours.addClass(self.disabledCssClass);
self.txtDirectHours.addClass(self.disabledCssClass);
self.txtIndirectHours.addClass(self.disabledCssClass);
self.txtOtherHours.addClass(self.disabledCssClass);
self.txtARRThreshold.addClass(self.disabledCssClass);
self.txtAppropriationHours.addClass(self.disabledCssClass);
self.txtAppropriationDollars.addClass(self.disabledCssClass);
self.ibtnSaveProject.css('display', 'none');
};
/// <summary></summary>
this.close = function() {
self.clear();
closeSubForm('<%=divProjectDialog.ClientID %>');
};
/// <summary></summary>
this.clear = function() {
self.validationController.clear();
self.hidProjectKey.val('0');
self.txtProjectName.val('');
self.txtProjectNumber.val('');
self.txtProjectManager.val('');
self.txtProjectDescription.val('');
self.txtStartDate.val('');
self.txtEndDate.val('');
self.txtEngineeringHours.val('0.00');
self.txtDirectHours.val('0.00');
self.txtIndirectHours.val('0.00');
self.txtOtherHours.val('0.00');
self.txtARRThreshold.val('0.00');
self.txtAppropriationHours.val('0.00');
self.txtAppropriationDollars.val('0.00');
};
/// <summary></summary>
this.isOpen = function() {
var context = $(self.controller.container)
return (context.css('opacity') == '0') ? false : true;
};
/// <summary></summary>
this.isValid = function() {
self.validationController.clear();
var key = parseInt(self.hidProjectKey.val());
if (self.ddlClients.val().length == 0) {
var validator = self.validationController.getValidator(self.ddlClients.id());
validator.appendMessage("Please choose an option.");
}
if (self.txtProjectName.val().length == 0) {
var validator = self.validationController.getValidator(self.txtProjectName.id());
validator.appendMessage("Cannot be empty.");
}
if (self.hidProjectKey.val().length > 0) {
var key = parseInt(self.hidProjectKey.extractValue());
if (key > 0)
{
if (self.ddlEMREProductivityCurve.val().toLowerCase() == 'none') {
var validator = self.validationController.getValidator(self.ddlEMREProductivityCurve.id());
validator.appendMessage("Please choose an option.");
}
if (self.txtStartDate.val().length == 0) {
var validator = self.validationController.getValidator(self.txtStartDate.id());
validator.appendMessage("Click calendar to choose a valid date.");
}
if (self.txtEndDate.val().length == 0) {
var validator = self.validationController.getValidator(self.txtEndDate.id());
validator.appendMessage("Click calendar to choose a valid date.");
}
if ((self.txtStartDate.val().length > 0) && (self.txtEndDate.val().length > 0)) {
var startDate = new Date(self.txtStartDate.val());
var endDate = new Date(self.txtEndDate.val());
if (startDate > endDate) {
var validator = self.validationController.getValidator(self.txtEndDate.id());
validator.appendMessage("End date must br greater than start date.");
}
}
}
}
if (self.txtARRThreshold.val().length == 0) {
var validator = self.validationController.getValidator(self.txtARRThreshold.id());
validator.appendMessage("Cannot be empty.");
}
else if (isNaN(self.txtARRThreshold.extractValue())) {
var validator = self.validationController.getValidator(self.txtARRThreshold.id());
validator.appendMessage("Is not a valid number.");
}
if (self.txtEngineeringHours.val().length == 0) {
var validator = self.validationController.getValidator(self.txtEngineeringHours.id());
validator.appendMessage("Cannot be empty.");
}
else if (isNaN(self.txtEngineeringHours.extractValue())) {
var validator = self.validationController.getValidator(self.txtEngineeringHours.id());
validator.appendMessage("Is not a valid number.");
}
if (self.txtDirectHours.val().length == 0) {
var validator = self.validationController.getValidator(self.txtDirectHours.id());
validator.appendMessage("Cannot be empty.");
}
else if (isNaN(self.txtDirectHours.extractValue())) {
var validator = self.validationController.getValidator(self.txtDirectHours.id());
validator.appendMessage("Is not a valid number.");
}
if (self.txtIndirectHours.val().length == 0) {
var validator = self.validationController.getValidator(self.txtIndirectHours.id());
validator.appendMessage("Cannot be empty.");
}
else if (isNaN(self.txtIndirectHours.extractValue())) {
var validator = self.validationController.getValidator(self.txtIndirectHours.id());
validator.appendMessage("Is not a valid number.");
}
if (self.txtOtherHours.val().length == 0) {
var validator = self.validationController.getValidator(self.txtOtherHours.id());
validator.appendMessage("Cannot be empty.");
}
else if (isNaN(self.txtOtherHours.extractValue())) {
var validator = self.validationController.getValidator(self.txtOtherHours.id());
validator.appendMessage("Is not a valid number.");
}
if (self.txtAppropriationHours.val().length == 0) {
var validator = self.validationController.getValidator(self.txtAppropriationHours.id());
validator.appendMessage("Cannot be empty.");
}
else if (isNaN(self.txtAppropriationHours.extractValue())) {
var validator = self.validationController.getValidator(self.txtAppropriationHours.id());
validator.appendMessage("Is not a valid number.");
}
if (self.txtAppropriationDollars.val().length == 0) {
var validator = self.validationController.getValidator(self.txtAppropriationDollars.id());
validator.appendMessage("Cannot be empty.");
}
else if (isNaN(self.txtAppropriationDollars.extractValue())) {
var validator = self.validationController.getValidator(self.txtAppropriationDollars.id());
validator.appendMessage("Is not a valid number.");
}
self.validationController.displayAll();
return (self.validationController.hasErrors() == true) ? false : true;
};
/// <summary></summary>
this.calculateAppropriationHours = function() {
var engineeringHours = (+self.txtEngineeringHours.extractValue()) || 0;
var directHours = (+self.txtDirectHours.extractValue()) || 0;
var indirectHours = (+self.txtIndirectHours.extractValue()) || 0;
var otherHours = (+self.txtOtherHours.extractValue()) || 0;
var total = engineeringHours + directHours + indirectHours + otherHours;
self.txtAppropriationHours.val(total).change();
};
/// <summary></summary>
this.populateFrom = function(project) {
self.clear();
self.hidProjectKey.val(project.key);
// Drop-Down
self.ddlClients.val(project.clientKey);
self.txtProjectName.val(project.projectName);
self.txtProjectNumber.val(project.number);
self.txtProjectManager.val(project.projectManager);
self.txtProjectDescription.val(project.description);
// Drop-Down
self.ddlEMREProductivityCurve.val(project.productivityCurveType);
if(project.startDate != null)
self.txtStartDate.val(project.startDate);
if(project.startDate != null)
self.txtEndDate.val(project.endDate);
self.txtEngineeringHours.val(project.engineeringHours);
self.txtDirectHours.val(project.directHours);
self.txtIndirectHours.val(project.indirectHours);
self.txtOtherHours.val(project.otherHours);
self.txtARRThreshold.val(project.arrThreshold);
self.txtAppropriationHours.val(project.appropriationHours);
self.txtAppropriationDollars.val(project.appropriationAmount);
self.txtEngineeringHours.change();
self.txtDirectHours.change();
self.txtIndirectHours.change();
self.txtOtherHours.change();
self.txtARRThreshold.change();
self.txtAppropriationHours.change();
self.txtAppropriationDollars.change();
};
};
return publicInstances;
})(jQuery);
</script>
相关问题
- 1. 更改<href>至<script> javascript?
- 2. 打<audio> + <video>从Javascript
- 3. 像</p> <pre><code>Component { id: movie_delegate MovieListItem { movie: movie } } </code></pre> <p>内的JavaScript
- 4. 什么是<script type =“text/javascript”><!--mce:0--></script>?
- 5. <textarea>用JavaScript
- 6. Javascript getElementById <img>
- 7. Javascript-onchange <option>
- 8. <script></script> or <script />?
- 9. iPhone的内存管理:</p> <pre><code>- (void)dealloc { [myProperty release]; [myProperty2 release]; } - (void)main { // // Parse operation undertaken here // self.myProperty = nil; self.myProperty2 = nil; } </code></pre> <p>我的想法是:设置self.someProperty =零
- 10. 如何<li><a></a></li>
- 11. JavaScript和DOM:为什么“<table>”+ =“<tr></td></tr>”+ =“</ table”不起作用?
- 12. 浮动元素<br /><br /><br /><br /><br /\><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
- 13. 的JavaScript/<text area >
- 14. SyntaxHighlighter(javascript)问题<del>
- 15. 有! < and !>在JavaScript中?
- 16. Javascript创建<img>
- 17. javascript:<body onload =“”> and window.onload
- 18. 的Html <form>和JavaScript
- 19. JavaScript显示<br>
- 20. JavaScript中的<body>
- 21. 使用<canvas>和javascript
- 22. 使用>>,>,> |,||,| <,<,<<,<<
- 23. 元素宽度正好<code></body></code></p> <pre><code><script type="text/javascript" charset="utf-8"> $(document).ready(function(){ var diff = $('div.canvas img.photo').get(1).width; console.log(diff); }); </script> </code></pre> <p>之前对文件准备
- 24. <script>或<noscript>?
- 25. 如</p> <p><code><p>This is text </p></code>或<code><div></code>或<code>This is text</code></p> <p>使用<code>XmlPullParser</code>检索URL
- 26. 哪个更好:<脚本类型= “文/ JavaScript的”> ...</script>或<script> ...</script>
- 27. 在<a href="http://ryanmalin.co.uk/frames/" rel="nofollow">http://ryanmalin.co.uk/frames/</a></p> <p>使用Javascript
- 28. <%# %> VS <%= %>
- 29. 在<a href></a>函数中调用Javascript函数
- 30. Javascript in <head>在脚本之前执行<body>
+1。做这件事时总会有一件事 - 当值是一个字符串时,忘记将我的<%= %>块用引号括起来。看起来像我这样做至少有一次。 – Matt 2011-05-24 18:02:01