小编ren*_*thy的帖子

Webapi formdata上传(到DB)有额外的参数

我需要上传文件发送额外的参数.

我在stackoverflow中找到了以下帖子:带有额外参数的Webapi ajax formdata上传

它描述了如何使用MultipartFormDataStreamProvider并将数据保存到文件服务器.我不需要将文件保存到服务器,而是保存到DB.我已经使用MultipartMemoryStreamProvider处理代码,但它不使用额外的参数.

你能告诉我如何在webapi中处理额外的参数吗?

例如,如果我添加文件并测试参数:

data.append("myParameter", "test"); 
Run Code Online (Sandbox Code Playgroud)

这是我的webapi处理fileupload而没有额外的参数:

if (Request.Content.IsMimeMultipartContent())
{               
    var streamProvider = new MultipartMemoryStreamProvider();
    var task = Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith<IEnumerable<FileModel>>(t =>
    {
        if (t.IsFaulted || t.IsCanceled)
        {
            throw new HttpResponseException(HttpStatusCode.InternalServerError);
        }

        _fleDataService = new FileDataBLL();
        FileData fle;

        var fleInfo = streamProvider.Contents.Select(i => {         
            fle = new FileData();
            fle.FileName = i.Headers.ContentDisposition.FileName;

            var contentTest = i.ReadAsByteArrayAsync();
            contentTest.Wait();
            if (contentTest.Result != null)
            {
                fle.FileContent = contentTest.Result;
            }                       

            // get extra parameters here ??????

            _fleDataService.Save(fle);

            return new FileModel(i.Headers.ContentDisposition.FileName, 1024); //todo
        }); …
Run Code Online (Sandbox Code Playgroud)

c# file-upload form-data asp.net-web-api

27
推荐指数
3
解决办法
3万
查看次数

当添加具有绝对位置的div时,无法单击链接

我在页面上有菜单,div是绝对定位的.问题是当这个div在页面上时,我无法点击菜单项中的任何链接.

当我删除这个div(#left_border)时,可以再次点击链接.

为什么?

CSS:

 #left_border {
    background-image: url(http://tax.allfaces.lv/templates/tax/images/ena.png);
    background-position: 0 0;
    background-repeat: no-repeat;
    width: 1094px;
    background-size: 100% auto;
    position: absolute;
    height: 850px;
    left: -51px;
   top: 0px;
}  
Run Code Online (Sandbox Code Playgroud)

HTML:

<div id="wrapper">
<div id="content">
    <div id="left_border"></div>
    <div id="left">
        <div id="menu">
            <ul class="menu">
                <li class="item-101 current active deeper parent"><a href="/">Home</a>

                    <ul>
                        <li class="item-107"><a href="/index.php/home/news">News</a>

                        </li>
                    </ul>
                </li>
                <li class="item-102 deeper parent"><a href="/index.php/merchants-shops">Merchants / Shops</a>
                </li>                    
            </ul>
        </div>
    </div>       
</div>
Run Code Online (Sandbox Code Playgroud)

在这里,您看到,您无法单击菜单项:http://jsfiddle.net/Dq6F4/

html css

24
推荐指数
4
解决办法
3万
查看次数

tinymce:默认工具栏规范

我正在使用tinymce编辑器.我正在使用默认工具栏.我的意思是我没有指定任何额外的工具栏:

<script type="text/javascript">
    tinymce.init({
        selector: "textarea",
        height: 400,
        statusbar: false,
        menubar:false
     });
  </script>
Run Code Online (Sandbox Code Playgroud)

但是,现在我想将"font-size"和"table"工具栏添加到默认值.我能找到默认工具栏的某个地方吗?

以下是默认编辑器的外观: 在此输入图像描述

我试图通过自己创建工具栏选项,但我从来没有像默认情况下那样.所以我想找到默认的tinymce工具栏规范并添加"table"和"fontsize"选项.

tinymce

13
推荐指数
1
解决办法
7860
查看次数

C#泛型枚举转换为特定枚举

我有接受的通用方法,"T" type这是枚举器.在方法内部,我必须在枚举器类型上调用辅助类方法和方法名称depands.

public Meth<T> (T type) {

    if (typeof(T) == typeof(FirstEnumType)) {
       FirstEnumType t = ??? // I somehow need to convert T type to FirstEnumType
       this.helperFirstCalcBll(t);
    }
    else 
    {
        SecondEnumType t = ??? // I somehow need to convert T type to SecondEnumType
       this.helperSecondCalcBll(t);
    }    
}
Run Code Online (Sandbox Code Playgroud)

c# enums

12
推荐指数
2
解决办法
3179
查看次数

淘汰赛自定义数字绑定

我想使用这种技术:在knockout上创建一个仅输入数字类型

允许用户只输入数字.

但是,此技术不会更新UI上的可观察值.

HTML:

 <span data-bind="text: Interval" ></span>
 <input data-bind="numeric: Interval" />
Run Code Online (Sandbox Code Playgroud)

捆绑:

ko.bindingHandlers.numeric = {
    init: function (element, valueAccessor) {
        $(element).on("keydown", function (event) {
            // Allow: backspace, delete, tab, escape, and enter
            if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
                // Allow: Ctrl+A
                (event.keyCode == 65 && event.ctrlKey === true) ||
                // Allow: . ,
                (event.keyCode == 188 || event.keyCode == 190 || event.keyCode == …
Run Code Online (Sandbox Code Playgroud)

javascript jquery knockout.js

11
推荐指数
2
解决办法
8103
查看次数

在页面加载时隐藏空元素,但之后不使用knockout.js

我有一个有很多输入的表格.

我在表单中使用以下语法:<!-- ko if: PropertyName -->.我在特定字段的表单中使用此语句.这允许我隐藏未定义的值(实际上不隐藏,但从DOM中删除).

但是,我不需要动态隐藏它们.我的意思是,当值不为空且已加载时,用户可以编辑它,用户可以清空它.在这种情况下输入消失,我不需要这个.

你能建议我 - 如何改变我的标记和使用什么绑定?

<!-- ko if: IsEmptyOnLoad(Property1) -->.
<input type="text" data-bind="value: Property1" />
<!-- /ko -->

<!-- ko if: IsEmptyOnLoad (Property2) -->.
<input type="text" data-bind="value: Property2" />
<!-- /ko -->

var myModel = function() {
    var self = this;

    self.Property1= ko.observable("non-empty");
    self.Property2= ko.observable();

    //self.IsEmptyOnLoad  is not implemented, how to implement?
};

var m = new myModel();
ko.applyBindings(m);
Run Code Online (Sandbox Code Playgroud)

您可以尝试使用相应的JSFiddle.

这可能很奇怪,但我确实有业务场景:

  • onload不显示任何空变量,因此在加载页面后,只会将非空变量加载到页面中
  • 加载页面后,用户可以编辑变量,其中一些变量可以被删除(变空),但在这种情况下我不需要隐藏空变量

javascript jquery knockout.js

9
推荐指数
1
解决办法
1617
查看次数

将ID添加到GridView Row

如何向GridView行添加ID(应该呈现ID)?

我正在使用.NET(C#).我有GridView控件.

我有一些操作表行的javascript函数,但是必须为这些行设置ID:

<table>
    <tr id=1> ...  
    <tr id=2> ...  //id should come from database
..
Run Code Online (Sandbox Code Playgroud)

我的GridView源自DataBase中的Data.重要的是不要有FAKE ROW IDS,而是真正来自DB的行ID(有一些ajax javascript函数可以根据这些ID和用户对表的操作来更新DB).

我的部分GridView如下:

  <asp:GridView ID="grdNews" runat="server" BorderStyle="None" RowStyle-BorderStyle="None"
                GridLines="None" CssClass="table" Style="white-space: nowrap" AutoGenerateColumns="False"
                DataKeyNames="ID" AllowSorting="True" AllowPaging="true" OnSorting="grdNews_Sorting" OnRowDataBound="grdNews_RowDataBound">
                <RowStyle BorderStyle="None" />
                <HeaderStyle CssClass="nodrag" />
                <Columns>
                ....
Run Code Online (Sandbox Code Playgroud)

我尝试过以下方法:

 protected void grdNews_RowDataBound(object sender, GridViewRowEventArgs e)
{
     if (e.Row.RowType == DataControlRowType.DataRow)
     {
         e.Row.ID = grdNews.DataKeys[e.Row.RowIndex].Value.ToString();
     }
}
Run Code Online (Sandbox Code Playgroud)

这为e.Row.ID提供了正确的值,但这不会呈现此ID.

那么,如何在GridView中从DataBase for Rows呈现ID?

asp.net

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

使用twitter bootstrap将表单分成两列

在以下场景中form使用引导程序设置样式的正确方法是什么:

两列形式视图

  1. 我需要使用fieldset(将在以后设置样式)

  2. 我需要form分成两列

  3. 每列都有标签+控件,有些会有标签+ control1 + control2等.

我是bootstrap的新手.我来到以下解决方案(jsfiddle).

问题是:这是正确的方法吗?它是否违反了引导语义?

我不明白何时使用form-group,我是否正确使用它?

我不应该在这里包含一些class="row"正确的语义吗?

HTML:

<div class="container">
... <some content here> ....

<form class="form-horizontal">
    <fieldset>
        <legend>Portfolio</legend>
        <div class="col-xs-6">
            <div class="form-group">
                <label for="name" class="col-xs-4 control-label">Label1</label>
                <div class="col-xs-8">
                    <input type="text" class="form-control" placeholder="control1" />
                </div>
            </div>
            <div class="form-group">
                <label for="name" class="col-xs-4 control-label">label2</label>
                <div class="col-xs-8">
                    <input type="text" class="form-control" placeholder="control2" />
                </div>
            </div>
            <div class="form-group">
                <label for="name" class="col-xs-4 control-label">label3</label>
                <div …
Run Code Online (Sandbox Code Playgroud)

html css twitter-bootstrap-3

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

knockout将附加参数传递给订阅功能

我想要实现的是为模型属性创建订阅.此订阅函数应通过Ajax更新数据库中的属性值来调用WebApi.对于ajax调用,我需要三个参数:" fieldName"," fieldValue"和" modelId",ajax将根据这三个参数更新数据库行.

我有很多属性,所有属性都需要相同的功能,所以我不想单独订阅每个属性,所以我找到了以下建议:

ko.subscribable.fn.withUpdater = function (handler) {
    var self = this;    
    this.subscribe(handler);    
    //support chaining 
    return this;    
};
Run Code Online (Sandbox Code Playgroud)

添加它是如何"附加"到observables:

self.ModelId= ko.observable();
self.CompanyName = ko.observable().withUpdater(update);
Run Code Online (Sandbox Code Playgroud)

这里update是模型之外的一些js函数.

但是,我有问题,因为我无法将三个参数传递给update函数(或者我可以用另一个词来说 - 我需要能够获得viewModel.ModelId内部的属性值update,以及propertyName).

function update (propertyName, propertyNewValue, anotherPropertyValue) {
  //do ajax update 
}
Run Code Online (Sandbox Code Playgroud)

作为CompanyName属性的示例,它将是:

update("CompanyName", "New Company value here", 3), 
Run Code Online (Sandbox Code Playgroud)

哪里

3 == viewModel.ModelId
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery knockout.js

7
推荐指数
1
解决办法
3781
查看次数

在.net中的文件上载期间拒绝访问路径....

我无法在.net c#中上传文件.我使用以下代码:

try
{
    var provider = new MultipartMemoryStreamProvider();
    await Request.Content.ReadAsMultipartAsync(provider);
    foreach (var file in provider.Contents)
    {
         var mappedPath = System.Web.Hosting.HostingEnvironment.MapPath("~/Resources");                    
         var dataStream = await file.ReadAsStreamAsync();
         FileStream fileStream = File.Create(mappedPath, (int)dataStream.Length);
    }
    var response = Request.CreateResponse(HttpStatusCode.OK);
    response.Content = new StringContent("Successful upload", Encoding.UTF8, "text/plain");
    response.Content.Headers.ContentType = new MediaTypeWithQualityHeaderValue(@"text/html");
    return response;
}
catch (Exception e)
{
     return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e.Message);
}
Run Code Online (Sandbox Code Playgroud)

这发生在localhost上.我有"访问路径...被拒绝"错误.我试图更改文件夹"资源"的安全权限,但可能我不知道添加完全控制的组/用户名.

我试过了:

  1. 选择computername并添加NETWORK SERVICE - 完全控制
  2. 选择computername并添加IIS_IUSERS - 完全控制
  3. 我已经尝试了以上所有并且还以管理员身份运行IDE

.net c# file-upload

7
推荐指数
1
解决办法
1246
查看次数