首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >再次调用相同的控制器方法不起作用

再次调用相同的控制器方法不起作用
EN

Stack Overflow用户
提问于 2017-12-16 01:15:43
回答 1查看 61关注 0票数 1

我的WriteupController.cs中有以下控制器方法:

代码语言:javascript
复制
public async Task<ActionResult> Writeups(string symbol, string status,  
    DateTime? mktDate, DateTime? writeupDate)
{
    // get datamodel
    return View(datamodel);
}

这被称为使用

代码语言:javascript
复制
<a href="@Url.Action("Writeups", "Writeup", new { symbol = item.SecSymbol, status = item.Status, mktDate = "10/10/2010", writeupDate = "10/11/2010"  })

并且显示正确的视图cshtml。到现在为止还好。页面上有一个带有符号的下拉列表。当选择其中一个时,我有以下ajax调用:

代码语言:javascript
复制
            $("#companiesDDL").change(function () {   
            var postdata = { "symbol": "1099.HK", "status": "A", "mktDate": "10/10/2010", "writeupDate": "10/10/2010" };
            $.ajax({
                url: '@Url.Action("Writeups", "Writeup")',
                dataType: "json",
                data: postdata,
                success: function (result, status, xhr) {
                    alert("Result: " + status + " " + xhr.status + " " + xhr.statusText)                   
                },
                error: function (xhr, status, error) {                     
                }
            });
        });

如您所见,url是相同的。在调试时,我可以在控制器方法的数据模型中以及cshtml视图本身中看到正确的数据。但是,该页不会加载。也就是说,我看不到新符号的信息。如何解决此问题?

编辑:

以下是我的观点。如上所述,我最初看到的是CompDescShort。但当我从ajax调用时就不会了。

代码语言:javascript
复制
            <textarea name="editor" id="editor" rows="10" cols="80">
                @if (Model.Count > 0)
                {
                        @Model.CompDescShort
                }
            </textarea>

已修复,通过使用:

代码语言:javascript
复制
        <select id="companiesDDL" class="tmpdisplay" style="margin-left: 15px;" onchange="location.href=this.value">
            @foreach (var item in Model.companyList)
            {
                <option value='@Url.Action("Writeups", "Writeup", new { symbol = item.SecSymbol, status = "A" })'>@item.SecDesc</option>
            }
        </select>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-18 23:52:52

我很欣赏你有一个修复,当一个项目被选中时,它会进行整个页面的刷新,但采用你最初的ajax方法,以下方法应该有效;

代码语言:javascript
复制
$("#companiesDDL").change(function () {   
        var postdata = { "symbol": "1099.HK", "status": "A", "mktDate": "10/10/2010", "writeupDate": "10/10/2010" };
        $.ajax({
            url: '@Url.Action("Writeups", "Writeup")',
            dataType: "json",
            data: postdata,
            success: function (result, status, xhr) {
                $('#editor).val(xhr.statusText);
            },
            error: function (xhr, status, error) {                     
            }
        });

您遗漏的一点是,当ajax调用完成时,由调用者决定如何处理它。在本例中,我们使用ID定位器$('#editor')在jQuery中定位<textarea>元素,并使用val()设置它的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47836980

复制
相关文章

相似问题

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