- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在为以下场景寻找最佳方法建议:
现在,要使一切都异步,我的想法是 View 需要为每个文件提供单独的灵活部分。
我正在使用带有 knockout.js 的 MVC5 razor views,我对部分 View 有不错的想法,但我不确定如何去做。如果不是局部 View ,那么最好的方法是什么。
最佳答案
my thought is that the view needs to have individual flexible section for each file
有点,我认为您需要一个单独的文件模型/类,以便按需运行 ajax 命令,至少我是这样理解您的解释的。
查看这个 jsfiddle,我添加了一些随机的 true/false 和字符串内容来尝试尽快模仿您的布局。对于测试,请尝试使用 5 个或更多文件(随机生成器在 JS 中有点挑剔)。
https://jsfiddle.net/n2ne6yLh/10/
所以本质上,您在文件输入上监听更改事件。在这种情况下,将每个文件映射到一个新模型“FileModel”,然后将其推送到 observableArray 文件中。每个 FileModel 包含它自己的单独结果、验证函数等。然后布局负责其余部分。
您需要查看 FormData Web API 才能使用 Javascript 处理文件。如果您的客户/用户使用的是过时的浏览器,则存在用于 FormData 内容、jquery 和您拥有的东西的垫片/polyfill。 https://developer.mozilla.org/en-US/docs/Web/API/FormData
var PageModel = function(r) {
var self = this;
this.Files = ko.observableArray();
this.FileErrors = ko.computed(function() {
return _.some(self.Files(), function(file) {
return file.IsValid() === false;
});
});
this.ClearFiles = function() {
document.getElementById("your-files").value = "";
self.Files([]);
};
var control = document.getElementById("your-files");
control.addEventListener("change", function(event) {
// When the control has changed, there are new files
var i = 0,
files = control.files,
len = files.length;
var form = new FormData();
for (; i < len; i++) {
form.append(files[i].name, files[i]);
self.Files.push(new FileModel(files[i], files[i]));
}
}, false);
}
var FileModel = function(r, fileObject) {
var self = this;
this.FileObject = fileObject;
this.Name = r.name;
this.Type = r.type;
this.Size = r.size;
this.IsValidated = ko.observable(false);
this.IsValid = ko.observable();
this.ValidationErrors = ko.observable();
this.ValidateFile = function() {
//Do some ajax to validate file
//console.log('Doing an ajax thing.')
// Randomizers for validation, remove in production
var random_boolean = Math.random() >= 0.5;
var random_strins = Math.random().toString(36).substring(7);
// Set vals based on returned ajax response.
self.IsValidated(true);
self.IsValid(random_boolean);
self.ValidationErrors(random_strins);
};
this.UploadFile = function() {
alert('uploading this file to the interwebs, yay!')
}
}
window.model = new PageModel();
ko.applyBindings(model);
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div class="container">
<div class="row">
<div class="col-md-6 col-md-push-3">
<div class="form-group">
<div class="input-group">
<input type="file" class="form-control" id="your-files" multiple>
<span class="input-group-btn">
<button class="btn btn-info" data-bind="click: ClearFiles">Clear</button>
</span>
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="col-sm-6">
<h4>Validate Files</h4>
<!-- ko if: Files().length > 0 -->
<table class="table table-condensed table-hover">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Size (bytes)</th>
</tr>
</thead>
<tbody>
<!-- ko foreach: Files -->
<tr data-bind="css: IsValid() ? 'success' : ''">
<td><span data-bind="text: Name"></span>
</td>
<td><span data-bind="text: Type"></span>
</td>
<td><span data-bind="text: Size"></span>
</td>
<td>
<button class="btn btn-sm btn-success" data-bind="click: ValidateFile, visible: !IsValidated()">Validate</button>
<button class="btn btn-sm btn-success" data-bind="click: UploadFile, visible: IsValid()">Upload</button>
</td>
</tr>
<!-- /ko -->
</tbody>
</table>
<!-- /ko -->
</div>
<div class="col-sm-6">
<h4>File Errors</h4>
<!-- ko if: FileErrors() -->
<table class="table table-hovered">
<thead>
<tr>
<th>Name</th>
<th>Error Message</th>
</tr>
</thead>
<tbody>
<!-- ko foreach: Files -->
<!-- ko if: IsValid() == false -->
<tr>
<td data-bind="text: Name"></td>
<td data-bind="text: ValidationErrors"></td>
</tr>
<!-- /ko -->
<!-- /ko -->
</tbody>
</table>
<!-- /ko -->
</div>
</div>
</div>
关于c# - 根据 Controller 响应动态更改 View 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41739118/
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!