我有这个事件:
on("error")
我的控制器方法可以在无法加载图像时抛出异常(可能有多种原因,但主要原因是图像不存在),我可以在浏览器控制台中看到它。
重要的是要说图像不存在于任何服务器目录中,并且我不想存储它,我将它从一个Dropbox共享文件夹中检索为一个字节数组。
但我在视图中显示用户友好的消息时遇到问题。 由于我的控制器的响应存储在src中,我无法访问错误信息。
使用事件img.onerror
或Content("<script>alert("+errormessage+");</script>")
不会提供有关错误的任何信息。
如果我返回 private void button1_Click(object sender, EventArgs e)
{
//put your string in a textxbox with multiline property set to true
string[] s = textBox1.Text.Replace("\r", "").Replace("\n", "").Split(',');
string r = "";
for (int i = 0; i < s.Length; i++)
{
r = r + s[i] + ",";
if ((i + 1) % 3 == 0)
r = r + "+";
}
if (r.Substring(r.Length - 1, 1) == ",")
r = r.Substring(0, r.Length - 1);
if (r.Substring(r.Length - 1, 1) == "+")
r = r.Substring(0, r.Length - 1);
string[] finalArrayString = r.Trim().Split('+');
//just for show the result
textBox1.Text = "";
for (int i = 0; i < finalArrayString.Length; i++)
textBox1.Text = textBox1.Text + finalArrayString[i] + "\r\n";
}
,则不会显示警告。
我想避免多次调用服务器,所以ajax检查错误然后分配src并不适合我。
我还想避免将img转换为base 64,然后将其分配给src,因为img变得更大了。
我在这里要求一个不可能的事情,或者有一种方法可以在我无法想到的视图上显示错误信息?
如果它太令人困惑,请指出它,我会尝试以更好的方式解释自己。感谢。
答案 0 :(得分:0)
请勿使用图片src
来保存@Url.Action()
- 这不是必需的,而且是不正确的HTML。
有些$.ajax
应该可以达到你想要的效果。如果你愿意,你可以详细说明一个正确的返回模型(例如,完全不依赖于字符串响应),但是这个或更具体的版本应该能够实现你所追求的目标:
<div id="itemImage">
<img src="/path/to/initial-image.png" />
</div>
<button id="test-button">TEST</button>
<script>
$("#test-button").on("click", function () {
onChange("test-product-name");
});
function onChange(productName) {
var url = "@Url.Action("GetCustomProductImage")";
$.ajax({
url: url + "?productName=" + productName,
type: "GET",
dataType: "json",
success: function (transport) {
if (transport !== "false") {
$("#itemImage img").attr('src', transport);
} else {
$("#itemImage").text("Could not be retrieved");
}
},
error: function () {
console.log("ERROR");
}
});
}
</script>
控制器操作:
public JsonResult GetCustomProductImage(string productName)
{
// Get image src from productSrc - ideally, build a Json return model
// EITHER:
var transport = "/Path/To/image.png";
// OR:
//var transport = "false";
return Json(transport, JsonRequestBehavior.AllowGet);
}
根据您更新的问题,您可能会发现this answer非常有用,可以获取对Dropbox托管图像的引用或将文件下载到服务器并引用该文件。