我在Asp.net Mvc上传文件时遇到问题.首先,我应该使用Ajax传递上传文件值.
在javascript我有我填充的模型,当我用调试器检查它是否正确填充对象,但当我将此模型发送到服务器(控制器)
httpPostedfileBase值始终为null.
我在谷歌搜索它,在一些帖子中我看到我不能使用文件上传器与Ajax,但在其他我看到我可以.
但我无法修复我的代码.
有我的Javascript代码.
$(document).ready(function () {
$('#btnUploadFile').on('click', function () {
var data= new FormData();
debugger;
var files = $("#fileUpload").get(0).files;
if (files.length > 0) {
data.append("UploadedImage", files[0]);
}
var ResturantSharingViewModel =
{
Type: $("#SharingTargetType").val(),
SharingTitle: $("#SharingTitle").val(),
content: $("#Content").val(),
ItemId : $("#ItemId").val(),
Photos: files[0]
};
$.ajax({
type: 'POST',
dataType: 'json',
contentType: 'application/json',
url: '<%= Url.Action("SaveOneDatabase")%>',
data: JSON.stringify(ResturantSharingViewModel),
success: function (result) {
var rs = result;
},
error: function () {
alert("Error loading data! Please try again.");
}
}); …
Run Code Online (Sandbox Code Playgroud) 我在asp.net中遇到很多问题因为我是新手.所以我搜索,但我没有找到我的答案.
首先,我的视图引擎是aspx不是剃刀,这是我的主要问题.
这是视图
<%= Html.HiddenFor(model => model.SharingPremiumHistoryID) %>
<%= Html.HiddenFor(model => model.ItemId) %>
<div class="group">
<span> ????? ?? </span>
<%= Html.DropDownListFor(model => model.SharingTargetType, Model.SharingTypes) %>
</div>
</hgroup>
<div class="newseditor">
<div class="input-form">
<%= Html.LabelFor(model => model.SharingTitle, "????? ???") %>
<%= Html.TextBoxFor(model => model.SharingTitle) %>
</div>
<div class="input-form">
<%= Html.LabelFor(model => model.Content, "??? ???") %>
<%= Html.TextAreaFor(model => model.Content) %>
</div>
<div><input id="fileUpload" type="file" />
</div>
<button name="post" type="submit" >????? ???</button>
Run Code Online (Sandbox Code Playgroud)
因为你有一些填充模型的项目.
现在我的问题是如何通过提交按钮将此视图传递给控制器(带有Ajax).
这是控制器
public virtual ActionResult Add()
{
var model = …
Run Code Online (Sandbox Code Playgroud) 每年我们都有12个月.我应该编写一个查询,每个月在一个表中选择.例如,我应该制作报告,告诉我每个月的交易次数.
我做错了,但做错了.
我每个月都写了12个查询.
像这样 :
SET @MONTH12M = (SELECT SUM(Amount) AS TOT
FROM [fidilio].[dbo].[CardTransactionLog] CL
JOIN CardTransaction CT ON CT.CardTransactionLogId = CL.CardTransactionLogId
WHERE (cl.TransactionPersianTimeStamp > N'1393/12/01'
AND cl.TransactionPersianTimeStamp< N'1393/12/31')
)
INSERT INTO #TEMP(MonthValue, CountValue, TypeValue)
SELECT
12,
CASE WHEN @MONTH12M IS NULL THEN 0 ELSE @MONTH12M END,4
Run Code Online (Sandbox Code Playgroud)
我有11个这样的查询.
最后我获取了我放入临时表的结果.
我怎么能动态地这样做?
我怎么能用循环呢?
我在页面上有十个像按钮,我是通过页面上的foreach循环创建的.
我在使用jQuery更改内部文本时遇到问题.
让我用我的元素来解释
<a class="pr-endorse" id="<%=product.ConfectionaryProductId %>">
<i class="pr-add"></i>
<span>+</span>
<span class="pr-likes"><%=product.EndorsementCount %></span>
</a>
Run Code Online (Sandbox Code Playgroud)
这是我喜欢的按钮元素之一.
这是提交用户的Ajax函数
$(document).ready(function () {
$(".pr-endorse").click(function () {
debugger;
var productId = $(this).attr("id");
var confId = $("#ConfectioneryId").val();
var countNumber = $(this).find(".pr-likes").html();
$.ajax({
url: '<%: Url.Action("Endorsement","Confectionery")%>',
data: { productId: productId, itemId: confId },
type: "POST",
async: true,
cache: false,
success: function (result) {
debugger;
$(this).find(".pr-likes").text(result.endoresCount);
alert(result.endoresCount);
},
error: function (xhr) {
alert(xhr);
}
Run Code Online (Sandbox Code Playgroud)
我认为这部分代码应该解决
$(this).find(".pr-likes").text(result.endoresCount);
Run Code Online (Sandbox Code Playgroud)
但它不起作用?
我有网站,我想用WebClient Class下载文件.
例如,我有网址,我想下载它.在控制台应用程序中,此方法和代码正常工作
这是控制台应用程序中的示例代码:
public void DownloadFile(string sourceUrl, string targetFolder)
{
WebClient downloader = new WebClient();
downloader.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0)");
downloader.DownloadFileCompleted += new AsyncCompletedEventHandler(Downloader_DownloadFileCompleted);
downloader.DownloadProgressChanged +=
new DownloadProgressChangedEventHandler(Downloader_DownloadProgressChanged);
downloader.DownloadFileAsync(new Uri(sourceUrl.Replace(@"\","")), targetFolder);
while (downloader.IsBusy) { }
}
private void Downloader_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
//Console.Write(e.BytesReceived + " " + e.ProgressPercentage);
Console.Write("%" + e.ProgressPercentage);
}
Run Code Online (Sandbox Code Playgroud)
此示例代码在控制台应用程序中正常工作
我如何在asp.net mvc应用程序中使用此示例代码.
对于asp.net mvc它应该喜欢这个(我认为)
public ActionResult DownloadPage()
{
string url = "https://rjmediamusic.com/media/mp3/mp3-256/Mostafa-Yeganeh-Jadeh.mp3";
var downld = new DownloadManager();
downld.DownloadFile(url, @"c:\\temp\1.mp3");
return View();
}
Run Code Online (Sandbox Code Playgroud)
对我来说,事件处理程序方法(Downloader_DownloadProgressChanged)非常重要,因为我想在客户端创建进度条. …
我是 SignalR 的新手。
我的项目是在 signalR 和 sql 依赖项上提出 sql 更改。
这是使用C# 角的示例代码
一切都很好,但我通过这段代码得到了例外
using (var connection = new SqlConnection("Server=.;Database=fidilio;Trusted_Connection=True;"))
{
const string query = "SELECT Count(*) FROM [dbo].[MemberComment]";
connection.Open();
using (var command = new SqlCommand(query, connection))
{
command.Notification = null;
var dt = new DataTable();
var dependency = new SqlDependency(command);
dependency.OnChange += dependency_OnChange;
if (connection.State == ConnectionState.Closed)
connection.Open();
var reader = command.ExecuteScalar();
commentCount = Int16.Parse((reader.ToString()));
}
}
var context = GlobalHost.ConnectionManager.GetHubContext<NotficationHub>();
return context.Clients.All.RecevieNotification(commentCount);
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
asp.net-mvc ×4
c# ×3
ajax ×1
javascript ×1
jquery ×1
progress-bar ×1
signalr ×1
sql-server ×1
t-sql ×1
webclient ×1