当我使用 JS 时,我倾向于为浏览器创建一个控制台并即时操作值。
我有一个页面,我使用 React 来渲染一些组件,我有一个想法,那就是能够从控制台操纵它的状态以调试一个设计怪癖,该怪癖只有在组件处于极端情况时才可见状态。
我遇到了无法获取对组件的引用的问题。
我想可能有一个当前正在某处渲染的活动组件列表,但我无法在 React 全局对象或其他任何地方找到一个。
是否有对正在呈现的组件的公开引用?
我正在渲染组件,如:
<script>React.render(React.createElement(Comp, domElem))</script>
Run Code Online (Sandbox Code Playgroud)
我可以存储对结果的引用,React.createElement()但它似乎是一个反模式。此外,我正在使用 ReactJS.NET 库为我处理服务器端渲染,因此React.render生成了整条线并且很难修改。
我的另一个想法是创建一个 mixin,使组件在挂载时显式暴露自己,例如:
var ActiveComponents = [];
var debugMixin = {
componentDidMount: function () {
var id = this.getDOMNode().id;
ActiveComponents[id] = {
id: id,
getState: () => { return this.state; },
setState: (state) => { this.setState(state); },
comp: this
};
}
};
Run Code Online (Sandbox Code Playgroud)
这样的方法有缺点吗?这是上面提到的同一个反模式吗?
虽然比直接在组件代码中纠缠这些测试钩子要干净得多,但添加一个 mixin 仍然是一种修改,如果可能的话,我想避免这种情况。
我希望得到答案的问题是粗体的。
在我的网站上,每个文本都以 UTF-8 格式提供。
由于现在每个浏览器都支持 unicode 字符,我想按原样使用它们。
asp.net 框架通过将任何 unicode 替换为数字字符引用(如á. 参考检查:http : //en.wikipedia.org/wiki/Unicode_and_HTML#HTML_document_characters
当然,通过这种方式,网页可以在最古老的网景中正确呈现,但例如,谷歌分析电子商务模块在理解这些特殊编码的字符时遇到了一些麻烦。
有没有办法全局禁用数字字符引用编码?
例如我想用剃刀写:
<span class="title">@ViewBag.Title</span>
Run Code Online (Sandbox Code Playgroud)
我希望这显示在输出上:
<span class="title">Számítástechnika</span>
Run Code Online (Sandbox Code Playgroud)
不是这个:
<span class="title">Számítástechnika</span>
Run Code Online (Sandbox Code Playgroud)
我不是要禁用 html 编码,因此 Html.Raw 不是解决方案,例如我无法确保 @ViewBag.Title 不会满足以下内容:
<span class="title"><script>alert('injected hahahah');</script></span>
Run Code Online (Sandbox Code Playgroud)
所以我对特殊 html 字符的自动编码感到满意。那不是我想要禁用的。
我不想重组所有代码,我认为应该有一个“全局开关”来禁用在 razor 中使用字符串参数时的这种行为。有没有办法做到这一点?
我也可以明确禁止数字字符引用,例如像new MvcHtmlString(myString, some parameters)?
在ASP.NET MVC中,我非常喜欢它自动尝试从请求值填充Action参数的功能.
它使很多东西看起来非常干净,我的表格层次模型可以轻松地在那里旅行并通过电线返回.
但是它有一个恼人的问题.缺少非可空参数的自动异常.并不是框架错了.我理解这背后的原因,但是:
这种错误应该在应用程序中很好地处理,我不需要用错误污染我的日志,对于这些情况也是404错误更合适恕我直言,因为没有标识符参数"无法找到资源".
我有一些关于如何避免这种情况的想法,但我想要一些透明的东西在一个地方处理它.
到目前为止,我所做的就是制作参数int?.
不是很透明,我需要ID.HasValue到处检查并明确抛出404.这污染了Action逻辑.
解决这个问题的最佳地点是什么?
编辑:
我还想指出,尽管抛出一个HttpException(404,"")仍然是一个例外,但由于浏览器搜索favicon等等,爬虫对恶意网址提出了大量请求,所有我的日志记录,警报等都是相应配置的.
我在会话中有一个自定义对象,它通过主页和主页上的回发进行更新。
回发后,我需要获取 Session 对象,重建和修改它的部分或整个对象,然后将其加载回 Session。
我已经在主页的 Page_Load 中编写了这段代码。它仅在一页上运行良好。
现在我已经用相同的母版编写了另一个页面,我希望母版能够像以前一样修改我的会话对象。
所以我想我只需要将会话处理代码移动到母版页的 Page_Load。但这并没有像我预期的那样工作,因为主页上的控件(即转发器)在母版页的 Page_Load 触发之前访问 OnItemDataBound 事件处理程序中的会话对象,这样它只能获取会话对象的先前状态. (只对主页的repeater有效,masterpage的repeater在访问session时获取当前状态)
无论我认为我可以使用母版页的 Page_PreLoad 事件,我都可以同样好地访问 Page_PreLoad 中的回发数据,并相应地更新会话对象,但我发现母版页上没有 Page_PreLoad,或者我无法用它。
我应该在哪里更新会话中的对象?
总结一下:我需要在母版页的代码隐藏中有一个地方可以使用回发数据,并且主页和母版页的转发器的 OnItemDataBound 事件都没有被触发。
我正在学习ASP.NET MVC3,我现在正在研究用户处理.我的第一个问题是(我知道在其他主题中有很多关于这个主题的内容,我只是找不到一个很好的MVC3)我希望登录页面重定向我来自我的地方,或者我从哪里重定向.在PHP中,也许我会将这个url添加到查询字符串中.但我需要一种方法以某种方式自动执行此操作,这是一种非常常见的设计模式,我想知道是否有"内置"方式来执行此操作.
什么是最干净,或首选的方式?
此外,当我重定向到登录页面时,这将是检查和存储我重定向的URL的最佳方式?我会在请求对象中检查引用者并将其在URL中吐出"?redirect = protected.html",但我甚至不确定如何正确执行此操作.
关于这个问题的任何建议将不胜感激.
我需要在我的MVC3项目中使用应用程序级缓存.
我想在控制器中使用这样的东西:
using System.Web.Caching;
protected IMyStuff GetStuff(string stuffkey)
{
var ret = Cache[stuffkey];
if (ret == null)
{
ret = LoadStuffFromDB(stuffkey);
Cache[stuffkey] = ret;
}
return (IMyStuff)ret;
}
Run Code Online (Sandbox Code Playgroud)
这会失败,因为Cache ["foo"]不能编译为"System.Web.Caching.Cache是'type',而是像'variable'一样使用".
我看到Cache是一个类,但是在控制器中像Session ["asdf"]一样使用它时,网上有很多例子,就像它是一个属性一样.
我究竟做错了什么?
使用node.js,我希望http.get以一次仅运行 10 个(或 n 个)的方式访问多个远程 url。
如果本地发生异常(m 次),我还想重试请求,但当状态代码返回错误(5XX、4XX 等)时,请求将被视为有效。
这对我来说真的很难理解。
问题:
似乎对于每个异步问题都建议使用 Promise,但我最终嵌套了太多 Promise,它很快就变得无法编码。
我必须解析一个字符串.它包含一个或两个数字.
它可以有3个来自.
数字可能是负数.
例如:
现在更难的部分:
-100--200表示:number1 = -100,number2 = -200
-100-200-表示:抛出新的FormatException().它不是一个有效的字符串.
任何无法解析为2 ints的东西都会抛出一个formatexception(int.Parse会这样做,因此可以依赖它).
我需要一个解析器来解析它到两个int?-s(可空的整数).
每个字符串都有效(有意义)或无效(它没有意义).没有字符串可以表示两件事(至少我找不到一件事).
如果我得到2值,我希望它返回一个元组.
我纠结于ifs.
我对正则表达式并不擅长,而且我无法找到适用的解决方案,所以在经过大量搜索之后,我仍然无法确定这一点.
我有一个带有可选page = 123参数的URL.url中也可以有其他可选的get参数,这些参数可以在page参数之前或之后发生.
我需要将该参数替换为page = - PLACEHOLDER--以便能够将其与我的分页功能一起使用.
如果页面参数没有出现在url中,我想按照之前描述的方式添加它.
我正在尝试为字符串编写一个扩展方法,但静态函数也同样好.
一点点的解释也会受到赞赏,因为它会给我一个很好的正则表达式的教训,并希望下次我不必问.
我也使用asp.net mvc-3但是出于兼容性原因,在mvc-s路由之前会发生复杂的重写,而我无法访问它.所以请不要建议我使用mvc-s路由,因为我不能.
我今天遇到了巫术.
语言: C
码:
#include <stdio.h>
main()
{
int i = 5;
i = i++;
printf ("%i", i);
}
Run Code Online (Sandbox Code Playgroud)
输出:
6
Run Code Online (Sandbox Code Playgroud)
怎么样?为什么?
这应该是棘手的代码,但反过来说.疏忽的程序员会认为这i = i++只是简单的增量,但事实并非如此.然而它在这里工作得像.它应该是5!就像在JavaScript中一样.
应该发生什么.
i得到的价值5.i++回报5.i后增加i++(到6).i获取5(返回i++)的值.i(5)的值被打印出来.但确实如此6.
我无法在SO或整个互联网上找到对此的描述(只是相反).
什么在这里打破?
请解释.
c# ×5
javascript ×2
asp.net ×1
asp.net-mvc ×1
asynchronous ×1
c ×1
caching ×1
console ×1
encoding ×1
login ×1
node.js ×1
parameters ×1
postback ×1
preload ×1
promise ×1
reactjs ×1
regex ×1
session ×1
utf-8 ×1
webforms ×1