首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于如何更新DOM但如何使用代码隐藏检查数据的问题

关于如何更新DOM但如何使用代码隐藏检查数据的问题
EN

Stack Overflow用户
提问于 2011-02-23 12:56:14
回答 3查看 287关注 0票数 0

这是使用ASP.NET Web .NET 2.0 -

我有一个情况,我不知道如何满足所有的要求。如果选择是从同一页的下拉列表中进行的,我需要更新页面上的img源代码。

基本上,跌落是该项目的“选项”。如果做出了选择(即颜色:红色),那么如果存在,我会将产品的img更新为类似(productID_red.jpeg)的内容。

问题是,我不想每次做出选择时都回发并刷新页面--尤其是如果我在将img替换为该产品之前检查图像是否存在,而该文件不存在,所以我只是将整个页面刷新为零。

问题:

因此,我很容易地将一些javascript放在一起,根据所选的选项来制定图像文件名的字符串。我的问题是,我要做以下几个选择:

  • 将构造的图像名称(即productID_red_large.jpg)提交给一些将验证文件是否存在于C#中或是否可能存在于javascript中的文件的地方。我还必须检查不同的文件类型(即.png、.jpg...etc.)。
  • 不回发并刷新整个页面

有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-23 14:10:05

将构造的图像名称(即productID_red_large.jpg)提交给一些将验证文件是否存在于C#中或是否可能存在于javascript中的文件的地方。我还必须检查不同的文件类型(即.png、.jpg...etc.)。 不回发并刷新整个页面

如果您不想回发到页面,您将需要查看$.ajax()$.post() (这只是$.ajax()的一些默认选项的缩写)。

要处理该请求,可以使用通用Http Handler

一个简单的大纲可以如下所示:

文章的jQuery示例:

代码语言:javascript
复制
$("someButton").click(function () {
    //Get the image name
    var imageToCheck = $("#imgFileName").val();
    //construct the data to send to the handler
    var dataToSend = {
        fileName: imageToCheck
    };
    $.post("/somePath/ValidateImage.ashx", dataToSend, function (data) {
        if (data === "valid") {
            //Do something
        } else {
            //Handle error
        }
    }, "html");
})

然后,在您的asp.net端,您将创建一个http处理程序来验证该请求。

代码语言:javascript
复制
public class Handler1 : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        var fileName = context.Request["fileName"];
        var fullPath = Path.Combine("SomeLocalPath", fileName);

        //Do something to validate the file
        if (File.Exists(fullPath))
        {
            context.Response.Write("valid");
        }
        else
        {
            context.Response.Write("invalid");
        }

    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

希望这对我有帮助,如果我在这一点上完全失手了,让我知道,我可以修改。

票数 1
EN

Stack Overflow用户

发布于 2011-02-23 14:24:12

我们有一个相同类型的应用程序,webforms .net 2,我们使用以下设置执行类似的操作:

使用jQuery,您可以在当前页面后面的页面中调用一个方法,例如,下面的代码将在名为selectBoxName的复选框更改时触发AJAX调用,因此您的代码在这里计算出图像名并将其发送到服务器。

代码语言:javascript
复制
$(document).ready(function () {
    $('#selectBoxName').change(function (event) {

        var image_name = 'calculated image name';

        $.ajax({
            type: "POST",
            url: 'SomePage.aspx/CheckImageName',
            data: "{'imageName': '" + image_name + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                alert(msg);
            },
            error: function (a, b, c) {
                alert("The image could not be loaded.");
            }
        });

    });
});

其中SomePage.aspx是当前的页面名,image_name中填充了您已经计算出来的名称。您可以在成功和错误消息中替换img,再次使用jQuery。

然后,该页面后面的代码将有一个类似于下面的方法,如果需要的话,您只需将true/fase或正确的图像路径作为字符串。您甚至可以返回更复杂的类型/对象,它将自动返回正确的JSON resposne。

代码语言:javascript
复制
    [System.Web.Services.WebMethod(true)]
    [System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
    public static bool CheckImageName(string imageName)
    {
        /*
         * Do some logic to check the file


        if (file exists)
        return true;

        return false;
         */
    }

由于它是.net 2应用程序,您可能需要安装AJAX扩展:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ca9d90fa-e8c9-42e3-aa19-08e2c027f5d6&displaylang=en

票数 1
EN

Stack Overflow用户

发布于 2011-02-24 06:42:21

您能不能不对图像的物理路径使用普通的ajax调用并检查它是否返回404?

代码语言:javascript
复制
Like this:
http://stackoverflow.com/questions/333634/http-head-request-in-javascript-ajax



<script type="text/javascript">
    function UrlExists(url) {
        var http = new XMLHttpRequest();
        http.open('HEAD', url, false);
        http.send();
        return http.status != 404;
    }

    function ConstructImage() {
        var e = document.getElementById("opt");
        var url = '[yourpath]/' + e.value + '.jpg';
        if (!UrlExists(url)) {
            alert('doesnt exists');
            //do stuff if doesnt exist
        } else {
            alert('exists');
            //change img if it does
        }
    }

</script>
<select id="opt" onchange="ConstructImage()">
    <option value="red">Red</option>
    <option value="blue">Blue</option>
    <option value="green">Green</option>
</select>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5091211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档