使用条件运算符 (IF..ELSE) 时,MVC 局部视图未呈现

MVC Partial view is not rendering when use Conditional operator (IF..ELSE)

我在我的 MVC Partial View 中使用 IF..ELSE 运算符,当我在其中使用 IF..Else..Operator 时,我的局部视图没有呈现,有人知道我该如何解决这个问题吗?



我怎样才能用其他方式做到这一点?

错误:"NetworkError: 500 Internal Server Error - http://localhost:50101/TaxRates/EditTaxRates?CountryTaxId=12"

EDIT

我的模型不为空,CountryId也不为空

HTML

<a onclick="editTaxRates(@item.CountryTaxId)"><span class="fa fa-2x fa-edit" style="cursor:pointer; color:black" title='Click to Edit Country'></span></a>
<form id="readIODetail" style="z-index:100">
        <div id="divAddCountryRecord" class="modal hide fade " tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="false" style="width: 700px; left: 46% !important;">
        </div>
</form>

Jquery

function editTaxRates(CountryTaxId) {
        var selectedCountryType = $("#selectedCountryType").val();
        $.ajax({
            type: 'POST',
            url: '/TaxRates/EditTaxRates?CountryTaxId=' + CountryTaxId,
            success: function (response) {
                $("#divAddCountryRecord").empty();
                $("#divAddCountryRecord").append(response);
                $('#divAddCountryRecord').modal('show');
            }
        })
    }

控制器

public PartialViewResult EditTaxRates(int? CountryTaxId)
    {
       // conditional code
        return PartialView(countryResult);
    }

.csHtml(视图)

<div class="modal-body" style="padding-left:10px;overflow-y:auto;">
    <div class="row-fluid container">
        <div class="span4">
        </div>
        <div class="row-fluid span12">
            <div class="span3">
                <p><strong>Country: </strong></p>
            </div>
            <div class="span5">
                @Html.TextBoxFor(m => m.CountryName, new { @readonly = true })
            </div>
        </div>
        <div class="row-fluid span12">
            <div class="span3">
                <p><strong>Tax-Rate: </strong></p>
            </div>
            <div class="span5">
                @if (Model.CountryId == 1)
                {
                    @Html.TextBoxFor(m => m.TaxRate, new { @id = "C_firstCountry" })
                }
                else
                {
                    @Html.TextBoxFor(m => m.TaxRate, new { @id = "C_secondCountry" })
                }
            </div>
        </div>
    </div>
</div>

感谢您提供宝贵的反馈意见。

为什么不使用条件运算符而不是编写 IF 语句? Here 是它的 MSDN 页面。

所以,我会按如下方式确定 ID,而不是编写您的 IF 语句:

@Html.TextBoxFor(m => m.TaxRate, new { @id = Model.CountryID == 1 ? "C_firstCountry" : "C_secondCountry" })

由于我不确定您是如何加载局部视图的,如果您的局部视图是页面上的静态 "control/view",我只能建议这样做。

@{ Html.RenderPartial("_YourPartialView", Model); }

如果这个 PartialView 是动态加载的,你可以看看使用 jquery 和 ajax。

击打 您的代码中几乎没有错误 当您在 if 条件 @if(Model.CountryId == 1)

中单独使用它时,您不能使用 (Model => Model.CountryName ....)

所以请将您的代码替换为以下代码,它会起作用

<div class="modal-body" style="padding-left:10px;overflow-y:auto;">
        <div class="row-fluid container">
            @Html.HiddenFor(row => row.CountryTaxId)
            <div class="span4">
            </div>
            <div class="row-fluid span12">
                <div class="span3">
                    <p><strong>Country: </strong></p>
                </div>
                <div class="span5">
                    @Html.TextBoxFor(row => row.CountryName, new { @placeholder = "Change the Country Name", @readonly = true })
                </div>
            </div>
            <div class="row-fluid span12">
                <div class="span3">
                    <p><strong>Tax-Rate: </strong></p>
                </div>
                <div class="span5">
                    @if (Model.CountryId == 1)
                    {
                        @Html.TextBoxFor(row => row.TaxRate, new { @placeholder = "Change the Tax-Rate", @id = "TaxRate" })
                    }
                </div>
            </div>
        </div>
    </div>

我在 if 子句中有一个部分视图。在某些情况下它无法呈现。

出于某种原因,将其更改为

@Html.Partial()

@Html.RenderPartial()

已修复。

我现在没有时间也不想进一步研究这个问题,但以下内容可以解释原因:Html.Partial vs Html.RenderPartial & Html.Action vs Html.RenderAction