小编Mar*_*arc的帖子

有没有一个伟大的图书馆为失踪的MVC 3 html表单字段助手?

我正在使用ASP.net MVC 3构建一个应用程序,我想知道是否有人知道一个很棒的库来填补内置的html表单字段助手的空白?

例如,创建文本框很简单:

@Html.EditorFor(model => model.TextboxTest)
Run Code Online (Sandbox Code Playgroud)

但是为了创建一个下拉列表,我必须写:

@Html.DropDownListFor(model => model.DropdownTest, Model.DropdownTestData)
Run Code Online (Sandbox Code Playgroud)

它应该写得像

@Html.EditorFor(model => model.DropdownTest) 
Run Code Online (Sandbox Code Playgroud)

其中DropdownTest是SelectList.

有一个示例解决方案可以在这里找到.


这是一个radiobuttons列表:它不包含在MVC中(目前).还有另一个很好的解决方案可以在这里找到,我可以用这个解决方案来编写

@Html.RadioButtonListFor(model=>model.Item,Model.ItemList)
Run Code Online (Sandbox Code Playgroud)

所以有可用解决方案,但没有结构化的库(分别我没有找到),我不想一块一块地复制和粘贴这些解决方案(因为我不能用NuGet轻松更新它),一个整体图书馆会更好,但我找不到.

请帮忙 :)

c# html-helper asp.net-mvc-3

6
推荐指数
1
解决办法
411
查看次数

在ExtJS 4中多个同时运行的ajax请求

问题

我有一个长期运行的导入作业,我从一个ajax请求开始,它可能需要几分钟,直到请求完成.当第一个ajax请求正在运行时,我想看看服务器知道导入消失了多少,第二个请求将每2秒左右完成一次.

当我使用该Ext.Ajax方法时,请求似乎被链接 - 第一个ajax请求(导入)运行直到它完成,然后第二个(导入更新)被触发.

我看到Ext.Ajax是单身,所以也许这就是原因.所以我尝试创建自己的Connection对象,Ext.create('Ext.data.Connection')但它不起作用.

目前的请求链是:

  • 第一个请求 - 开始
  • 第一个请求 - 结束
  • 第二个请求 - 开始
  • 第二个请求 - 结束

但它应该是:

  • 第一个请求 - 开始
  • 第二个请求 - 开始
  • 第二个请求 - 结束
  • ......也许更多第二次请求
  • 第一个请求 - 结束

浏览器应该能够处理多个请求,ExtJS内部必须有限制,但我没有找到它?


更新2011-10-16

回答

问题不是ExtJS - 对不起!这是PHP,我的第一个脚本与会话一起工作,第二个脚本也尝试访问会话.并且因为PHP会话是基于文件的,所以会话文件是从第一个请求脚本锁定的,第二个请求脚本必须等到第一个释放会话锁定.

我用我在每个x行之后添加到导入过程(第一个脚本)的一小段代码解决了这个问题:

 $id = session_id();
 session_write_close();
 sleep(1);
 session_start($id);
Run Code Online (Sandbox Code Playgroud)

所以它停止并重新加载会话,另一个脚本能够挂钩并获取会话信息.

php extjs4

6
推荐指数
1
解决办法
2412
查看次数

从ajax商店读取ExtJS消息

我有一个带有ajax代理和json阅读器的ExtJS商店:

Ext.create('Ext.data.Store', {
    proxy: {
        type: 'ajax',
        url: '...',
        reader: {
            type: 'json',
            root: 'data',
            totalProperty: 'totalCount',
            messageProperty: 'message',
            successProperty: 'success'
        },
    ...
Run Code Online (Sandbox Code Playgroud)

这是我从服务器获得的:

data: [...]
message: "I want to read this string after the store is loaded"
success: true
totalCount: x
Run Code Online (Sandbox Code Playgroud)

现在我想在加载商店时访问"消息" - 我从哪里获得它?我看了很多,但我找不到一个可以挂钩的地方?代理中唯一的侦听器是异常,这对我没有帮助.

extjs4

6
推荐指数
1
解决办法
7686
查看次数

在不使用反射的情况下在C#中反序列化JSON字符串

我正在使用Sharepoint中的沙箱解决方案,由于使用了.net 3.5而且没有允许反射的重要限制(关于这个问题).


例1

如果我尝试将JSON字符串反序列化为这样的简单类,它可以正常工作:

JSON STRING

{"field":"Picture1","url":"whatever"}
Run Code Online (Sandbox Code Playgroud)

C#CLASS

public class PictureSetting
{
    public string field { get; set; }
    public string url { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

例2

但是,如果我尝试反序列化更复杂的字符串,我会收到一个错误:

JSON STRING

{
  "Rows": [
    {
      "Columns": [
        {
          "Width": "100"
        }
      ]
    }    
  ]
}
Run Code Online (Sandbox Code Playgroud)

C#CLASSES

internal class PageStructure
{
    public List<StructureElement> Rows { get; set; }
    public PageStructure()
    {
        Rows = new List<StructureElement>();
    }
}

internal class StructureElement
{
    public List<BlockAssigment> Columns { get; set; }
    public StructureElement()
    { …
Run Code Online (Sandbox Code Playgroud)

c# serialization json

6
推荐指数
1
解决办法
1670
查看次数

在sharepoint中创建文档的编辑链接

我在sharepoint中有一个存储word文档的文档库.

如果我点击文档的链接,我会看到一个对话框,其中包含"你想在readonly或editmode等中打开这个文件",可以在编辑模式下打开它,更改它,直接保存在word中,更改保存在文档库.

文档库中文件的链接如下所示:

<a onfocus="OnLink(this)" 
   href="/test/DocLib2/wordtest.docx" 
   onmousedown="return VerifyHref(this,event,'1','SharePoint.OpenDocuments','')"     
   onclick="return DispEx(this,event,'TRUE','FALSE','FALSE',
            'SharePoint.OpenDocuments.3','1', 'SharePoint.OpenDocuments',
            '','','','1','0','0','0x7fffffffffffffff','','')"
>wordtest</a>
Run Code Online (Sandbox Code Playgroud)

如何在我自己的Web部件中创建此链接,其中我有文件和文档库的名称?如果不复制上面的代码,那不是一个好主意......

是否有一些"官方"方法来实现这一目标?

c# sharepoint sharepoint-2010

6
推荐指数
1
解决办法
8529
查看次数

初始化SharePoint后执行JavaScript函数

我有一个自定义的JS脚本,我加载到SharePoint中,并且在SP完成自己的初始化之后有问题要让我的init方法执行.

_spBodyOnLoadFunctionNames

我首先尝试了"官方"方式,并在加载后将我的函数名称添加到已执行函数列表中,_spBodyOnLoadFunctionNames.push("myInitMethod");但是不会在每次加载页面时触发,我不能依赖它.

ExecuteOrDelayUntilScriptLoaded

然后我尝试使用ExecuteOrDelayUntilScriptLoaded(myInitMethod, "sp.js");函数,但它不会在每个页面加载时触发.

两种方式都有效 - 但不是每次都有效.我假设初始化SP 之前有时会加载我的脚本.这主要发生在Chrome上,但也发生在IE上.

如何在SP准备好后确保我的脚本执行?


注意:加载页面并且SP对象未完全初始化时会有一个有趣的行为(ExecuteOrDelayUntilScriptLoaded中的已注册函数尚未被调用):只要我点击页面中的"向上导航"锚点(你在哪里)可以看到subites的hiarchy)以下文件被加载并且我的init函数(在ExecuteOrDelayUntilScriptLoaded中注册)被调用!

  • core.debug.js
  • sp.core.debug.js
  • ScriptResx.ashx
  • sp.ui.dialog.debug.js
  • sp.runtime.debug.js
  • sp.debug.js

所以在点击之后一切都很好 - 但为什么不在页面加载上呢?

javascript sharepoint sharepoint-2010

5
推荐指数
1
解决办法
2万
查看次数

jQuery只找到嵌套元素

鉴于此HTML结构

<div class="item">
    <div class="item">
        select me
        <div class="item">don't select me</div>
    </div>
    <span>
        <div class="item">select me</div>
    </span>
</div>
Run Code Online (Sandbox Code Playgroud)

而这个jQuery:

var firstItem = $('.item:first');
var selector = firstItem.find('.item');
selector.css('color', 'red');
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来只标记firstItem div中没有​​嵌套的.item元素.这里棘手的部分是firstItem本身(或可以)已经嵌套在.item类中.


我试过了什么?

firstItem.find('.item').not('.item .item')
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为我们开始的第一级已经是.item类.这可以嵌套x次,所以它可以是.item .item .item .item或者其他什么.并且起始元素没有ID,所以我也不能在选择器中使用它.


我认为解决方案应该是类似于反向的.closest(),它沿着DOM移动并且不搜索已经找到的项目的内容.

在这里准备了一个jsFiddle:http://jsfiddle.net/LWmy3/2/

jquery jquery-selectors

5
推荐指数
1
解决办法
2082
查看次数

序列化Paper.js中的项目

有没有办法用paper.js序列化项目中的所有当前项目?那么他们的位置,风格等等?

javascript paperjs

4
推荐指数
1
解决办法
2003
查看次数

如何构建自定义模型绑定器,根据请求上下文返回不同类型的模型?

我有来自具有不同内容的特定操作的传入请求(来自Facebook for Credits处理),因此我有不同的模型类来处理它.

这是我的行动:

public ActionResult Index([ModelBinder(typeof(FacebookCreditModelBinder))] IFacebookRequest facebookRequest)
{
    if (facebookRequest is FacebookPaymentsGetItemsRequest)
    {
        // do whatever
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的模型活页夹.

public class FacebookCreditModelBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var binder = new DefaultModelBinder();
        // how to change the model here in the bindingContext?
        return binder.BindModel(controllerContext, bindingContext); 
    }
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个FacebookPaymentsGetItemsRequest对象,如果传入的var"方法"是"payments_get_items",FacebookPaymentsStatusUpdateRequestif方法是"payments_status_update",我不知道如何在bindingContext中更改模型的类型.是否可以在自定义模型绑定器中更改模型的类型?


其他方法:我也尝试使用BindModel并且我能够返回正确的对象,但是所有属性都为null,因为它没有被默认的模型绑定器填充:

public override object BindModel(ControllerContext controllerContext,
        ModelBindingContext bindingContext)
{
    NameValueCollection form = controllerContext.HttpContext.Request.Form;
    if (form.Get("method") == "payments_get_items")
    {
        return new …
Run Code Online (Sandbox Code Playgroud)

custom-model-binder c#-4.0 asp.net-mvc-3

3
推荐指数
1
解决办法
2024
查看次数

在Razor中将viewmodel属性编码为JavaScript

我有一个简单的ViewModel:

public class IndexViewModel
{
    public bool ShowWelcomeMsg { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在我看来,我需要JS中的这个属性:

<script type="text/javascript">
    var ShowWelcomeMsg = @Model.ShowWelcomeMsg;
</script>
Run Code Online (Sandbox Code Playgroud)

但这不正确,因为它输出False而不是false但无论如何,问题更通用,因为我想知道int,string等的解决方案:

编码viewmodel属性以在JavaScript(在Razor中)中使用它的正确方法是什么?

c# razor asp.net-mvc-3

3
推荐指数
1
解决办法
2178
查看次数

sharepoint中的onready事件

我试着打电话new SP.ClientContext.get_current()但是在我这样做的时候我得到一个Cannot read property 'get_current' of undefined错误,因为SP.ClientContext没有初始化.如果我稍后调用该方法,一切正常.

所以我必须等到Sharepoint UI中的所有内容都被加载.怎么做?

我需要一个类似于jQuery 就绪机器人的js ready事件用于Sharepoint UI脚本,可能与SP.SOD但我无法弄清楚如何?

javascript sharepoint events sharepoint-2010

3
推荐指数
1
解决办法
2138
查看次数

jQuery选择器所有不在子类中的元素

鉴于页面上某处的HTML(可能不同):

<div id="start">
<div>
    <div class="buttons">select this</div>
    <div class="myControl">
        <div class="buttons">dont select this</div>
    </div>
    <div>
        <div class="buttons">select this</div>
    </div>
</div>
</div>?
Run Code Online (Sandbox Code Playgroud)

我想用buttons红色标记所有元素:

$('#start').find('.buttons').css('color','red');?
Run Code Online (Sandbox Code Playgroud)

不是如果它们在里面myControl,所以只有"选择这个"div应该是红色的.

在伪代码中,选择器将是

使用类"按钮"获取每个元素,但忽略类"myControl"中的所有元素

在这里准备了一个jsfiddle.


编辑

我不知道启动div也可以有"myControl"类(尽可能地从我的项目中删除代码以使其可读),所以实际上它看起来像这样(和完整的块也可以用myControl嵌套在更多的div中.

所以不幸的是(对我原来的问题是正确的)答案在那种情况下不起作用,对不起!知道如何调整其中一个答案来解决这个问题吗?

<div class="myControl" id="start">
<div>
    <div class="buttons">select this</div>
    <div class="myControl">
        <div class="buttons">dont select this</div>
    </div>
    <div>
        <div class="buttons">select this</div>
    </div>
</div>
</div>?
Run Code Online (Sandbox Code Playgroud)

这里有新的jsfiddle.


所以最终的解决方案是:

$('#start').find('.buttons:not("#start div.myControl div.buttons ")')
.css('color','red');?
Run Code Online (Sandbox Code Playgroud)

jquery jquery-selectors

3
推荐指数
1
解决办法
2957
查看次数

选择一个dom元素与jQuery不能使用此ID?

我有一种奇怪的行为,也许我错过了一些东西.

我有这个DOM元素(Sharepoint Ribbon Element,但无关紧要),我想通过ID选择jQuery:

<span class="ms-cui-row" 
id="Ribbon.EditingTools.CPEditTab.Font-Medium-0-0">...</span>
Run Code Online (Sandbox Code Playgroud)

如果我用类名选择它,$('.ms-cui-row')我可以选择它,但我不能用id $('#Ribbon.EditingTools.CPEditTab.Font-Medium-0-0').我甚至无法选择它$('[id="Ribbon.EditingTools.CPEditTab.Font-Medium-0-0"]').

那么这里有什么意义呢?也许在id名称中使用点不是一个好主意 - 但那是微软不是我,我无法改变它.但它们对他们来说似乎没问题?

我准备了一个jsfiddle来玩.

javascript jquery dom jquery-selectors

2
推荐指数
1
解决办法
584
查看次数