我是一个巨大的淘汰赛粉丝.我现在用它来进行我的所有网络开发,只是喜欢它.我无法弄清楚的一件事是如何在构建knockoutjs绑定时隐藏UI.
例如,我有一个非常强大的用户界面,我的页面上使用了很多模板.我注意到的问题是,当用户第一次访问页面时,他们会在绑定启动之前看到我的所有模板,并隐藏它们.
解决此问题的最佳方法是什么?我已经尝试使用辅助类来隐藏它们,但是除非我删除了辅助类引用(即ui-helper-hidden),否则模板不能使用'visible'和'if'绑定显示.
我已经开发了很长时间的类库,突然间,上周的某个时候,我打开了我的项目,我的所有引用现在都有黄色感叹号(System.dll,System.Drawing.dll等). ).我已经尝试删除引用并重新添加它们以修复任何损坏的引用路径,但它们继续在它们上显示黄色感叹号.
自从我上次打开项目以来没有任何改变.与我上次打开项目时唯一不同的是,这次我是从另一个项目的.NET内部直接打开它.例如,我正在研究.NET 3.5 Web项目,然后单击文件 - >打开最近的文件 - >我的其他解决方案.这关闭了我目前当前的3.5网络解决方案并打开了2.0类库解决方案,问题首次出现.我不确定这会导致问题的原因(或原因),但是我倾向于Visual Studio弄糊涂或其他东西,现在我的程序集在这个2.0类库项目中都是无效的.(?)
什么会导致这种情况发生,我该如何解决?我环顾网络,但我只看到有人建议删除引用并重新添加它们; 我做过的,无济于事.
我正在考虑开始一个新项目并逐个复制我的所有源文件,但如果可能的话,我真的想避免这一切.
提前致谢!
在我的Site.Master文件中,我有3个简单的ViewData参数(我整个解决方案中只有3个参数).这些ViewData值对于我的应用程序中的每个页面都至关重要.由于这些值在我的Site.Master中使用,我创建了一个抽象的SiteController类,它覆盖了OnActionExecuting方法,以便为我的解决方案中的每个控制器上的每个Action方法填充这些值.
[HandleError(ExceptionType=typeof(MyException), View="MyErrorView")]
public abstract class SiteController : Controller
{
protected override void OnActionExecuting(...)
{
ViewData["Theme"] = "BlueTheme";
ViewData["SiteName"] = "Company XYZ Web Portal";
ViewData["HeaderMessage"] = "Some message...";
base.OnActionExecuting(filterContext);
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当HandleErrorAttribute从SiteController类级别属性启动时,这些值不会传递给MyErrorView(最终是Site.Master).这是一个显示我的问题的简单方案:
public class TestingController : SiteController
{
public ActionResult DoSomething()
{
throw new MyException("pwnd!");
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试通过覆盖SiteController中的OnException()方法来填充ViewData参数,但无济于事.:(
在这种情况下,将ViewData参数传递给Site.Master的最佳方法是什么?
我和我的协会一直在争吵3天,不知道还有什么地方可以转.我确定问题很简单,但我对Ruby on Rails相当新,这让我感到难过......
我创建了一个用户模型,其中包含Devise身份验证的所有登录凭据.我有另一个配置文件模型,它包含所有用户的设置(名字等).最后,我有一个Address模型,它使用与Profile相关联的多态关联.
用户has_one
档案.配置文件belongs_to
用户和has_one
地址.Address是一个多态关联,它使我的应用程序中的其他模型具有与之关联的地址.
有一次,我的所有FactoryGirl定义都有效,但我正在解决accepts_nested_attributes_for
问题,并添加了一个after_initialize
回调来构建用户的配置文件和配置文件的地址.现在我的工厂彼此有一个循环引用,我的rspec输出充满了:
stack level too deep
Run Code Online (Sandbox Code Playgroud)
由于我在过去几天里对配置进行了如此多的修改,我觉得最好停下来寻求帮助.:)这就是我在这里的原因.如果有人可以帮我这个,我真的很感激.
这是我的工厂配置:
用户工厂
FactoryGirl.define do
sequence(:email) {|n| "person-#{n}@example.com"}
factory :user do
profile
name 'Test User'
email
password 'secret'
password_confirmation 'secret'
# required if the Devise Confirmable module is used
confirmed_at Time.now
end
end
Run Code Online (Sandbox Code Playgroud)
简介工厂
FactoryGirl.define do
factory :profile do
address
company_name "My Company"
first_name "First"
last_name "Last"
end
end
Run Code Online (Sandbox Code Playgroud)
地址工厂
FactoryGirl.define do
factory :address do
association :addressable, factory: :profile
address …
Run Code Online (Sandbox Code Playgroud) 首先,我要说明我知道在我的视图中访问服务器端控件在MVC中是不受欢迎的.但是,我需要在我的情况下(据我所知).这是我的故事.:)
我有一个第三方控件,我在我的Web应用程序中使用.我目前被赋予了将WebForms解决方案移植到MVC的任务.这个特定的第三方Web控件需要WebForms体系结构,因此我希望只使用WebForms项目中的相同代码.
我最初的方法是拥有两个网站(一个WebForms网站和一个MVC网站),然后使用来自MVC端的iFrame链接这两个网站.虽然我知道这会起作用,但使用这个特殊控件只是有点过分.经过更多的研究,我发现我可以"混合男孩们"并在MVC项目中使用WebForms架构.因此,我采用的新方法是仅将使用此第三方控件的页面复制到特定目录(即'View\SomeDir\WebForms'),然后忽略我的global.asax文件中的该目录,以便MVC路由系统没有拿起它:
routes.IgnoreRoute("View\SomeDir\WebForms\{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我将ASPX页面复制到我的MVC项目时,我发现CodeBehind不允许我访问我在页面上的控件.以下是设置方式:
<%@ Register
Assembly="..."
Namespace="..."
TagPrefix="custom" %>
<custom:SomeControl ID="customControl" runat="server" />
Run Code Online (Sandbox Code Playgroud)
这是我的代码背后的样子:
public class MyPage : Page
{
protected void Page_Load(object sender, EventArgs args)
{
Debug.WriteLine(customControl.ID); // <-- COMPILE ERROR: Cannot resolve symbol 'customControl'
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是我的项目甚至不会编译,因为我在CodeBehind的每个控件上都出现了这个错误.将其他控件(即标签,面板,文本框等)转换为客户端标签不是问题,但我需要在我的代码中访问此自定义控件,以便我可以收听它(服务器端) )事件并作出相应的反应; 基本的WebForms东西......
我正在努力做甚么可能吗?我想到的另一种方法might
是初始化并捕获控制器类中的服务器端事件.但是,我想避免在视图中序列化控件的状态,只是将其传递给控制器并尽可能返回?
提前感谢任何建议!
我正在尝试使用KnockoutJS来构建一个交互式仪表板,其中包含style
属性不同方面的数据绑定; 即left
,top
,width
,和height
.例如,我正在使用JQuery UI以及ui-draggable和ui-resizable效果,使用户能够在画布上拖动面板并调整它们的大小.没有KnockoutJS,我只是迭代每个div并从dom元素中窃取这些属性.我确信使用KnockoutJS有更好的方法,对吗?
为了更好地解释我的问题,请考虑两个面板并排:
<div id='dashboard'>
<div id='panel1' class='ui-draggable ui-resizable' data-bind='?????'>
<!-- content goes here -->
</div>
<div id='panel2' class='ui-draggable ui-resizable' data-bind='?????'>
<!-- content goes here -->
</div>
<button data-bind='click: send'>Update</button>
</div>
Run Code Online (Sandbox Code Playgroud)
我的视图模型看起来像这样(注意:伪编码为了简洁):
var viewModel = {
panels: [
{ id: 'panel1', left: 0, top: 0, width: 50; height: 50 },
{ id: 'panel2', left: 50, top: 0, width: 50; height: 50 } ],
send: function() {
ko.utils.postJson( location.href , …
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的项目添加"搜索"功能.我想要做的是只搜索JSON对象的值,以便在评估对象的成员时,我的正则表达式不会尝试匹配属性名称.
请考虑以下示例:
var myObj = {
'FirstName': 'Joe',
'LastName': 'Jones',
'Age': 35,
'Address': {
'City': 'Boise',
'State': 'Idaho'
}
};
var myObjValues = JSON.stringify(myObj);
// result: "{"FirstName":"Joe","LastName":"Jones", etc... }"
Run Code Online (Sandbox Code Playgroud)
但是,我想得到的是一个字符串,其中所有值都被分隔成一个由空格(或逗号,分号或制表符)分隔的单个字符串,如下所示:
// result: "Joe Jones 35 Boise Idaho"
Run Code Online (Sandbox Code Playgroud)
我永远不会知道对象是什么.在上面的示例中,我使用的是名称和地址,但对象可以是任何级别的嵌套对象.我只想要最深的属性是字符串和数字.
有没有办法使用JSON对象执行此操作?有没有一个库可以在某个地方执行此操作,我考虑编写自己的函数来剥离这些值并自己构建字符串,但不想重新发明轮子.
提前感谢任何提示或指示!
javascript ×3
asp.net-mvc ×2
knockout.js ×2
.net ×1
code-behind ×1
data-binding ×1
factory-bot ×1
handleerror ×1
json ×1
mvvm ×1
reference ×1
rspec ×1
viewdata ×1