Fitre
Fitre

Reputation: 31

ASP .Net MVC - can not get value from controller

i have code in my controller (Maintenance) like this :

public JsonResult GetGroupPortfolioDetail(string sPFolioGroupCode)
    {
        var result = _portfolioRepository.GetGroupPortfolio(sPFolioGroupCode.Trim());
        var portfolio = new TPFolio();

        portfolio.PFolioCode = result.PortfolioGroupCode;
        portfolio.PFolioSName = result.ShortName;
        portfolio.PFolioFName = result.FullName;
        portfolio.ReportingCurrency = result.Curr;
        portfolio.NPWP = result.NPWP;
        portfolio.IsActive = result.IsActive; 

        return Json(portfolio, JsonRequestBehavior.AllowGet);
    }

and code in viewmodel (GroupPortfolioViewModel) :

public class GroupPortFolio
{

    public string PortfolioGroupCode { get; set; }
    public string PortfolioCode { get; set; }
    public string ShortName { get; set; }
    public string FullName { get; set; }
    public float Seq { get; set; }
    public string IsActive { get; set; }
    public string NPWP { get; set; }
    public string Curr { get; set; }
    public string TimestampID { get; set; }
}

and code for query in my repositories folder Name File : (portfolioRepository) :

public GroupPortFolio GetGroupPortfolio(string sPFolioGroupCode)
    {
        string query = "SELECT DISTINCT B.PFolioGroupCode AS PortfolioGroupCode, A.PFolioSName AS ShortName , A.PFolioFName AS FullName,  A.IsActive AS Active, A.ReportingCurrency AS Curr, A.NPWP AS NPWP, A.TimestampID AS TimestampID ";
        query = query + " FROM TPFolio As A INNER JOIN TPFolioGroup As B ON A.PFolioCode = B.PFolioGroupCode WHERE (B.PFolioGroupCode = '" + sPFolioGroupCode + "')";

        return _db.ExecuteQuery<GroupPortFolio>(query).SingleOrDefault();
    }

and code in View (GroupPortfolio) :

function loadGroupPortFolio(sPFolioGroupCode) {

    $.ajax({
        url: '@Url.Action("GetGroupPortfolioDetail", "Maintenance")',
        data: 'sPFolioGroupCode=' + sPFolioGroupCode,
        success: function (result) {
            $('#PortfolioGroupCode').val(result.PFolioCode);
            $('#PortfolioSName').val(result.PFolioSName);
            $('#PortfolioFName').val(result.PFolioFName);
            $('#Currency').val(result.ReportingCurrency);
            $('#NPWP').val(result.NPWP);
            var isactive = result.IsActive;
            $("input[name='RadioActive']").each(function () {
                if ($(this).val() == isactive) {
                    $(this).attr("checked", "checked");
                    //$(this).prop("checked", "checked");
                }
            });

            TimeStampIDPortfolio = result.TimestampID;
        }
    });
}

and html :

<fieldset>
                    <div class="row">
                        <section class="col col-lg-2">
                            <label class="label">Code</label>
                            <label class="input">
                                <input type="text" name="PortfolioCode" id="PortfolioGroupCode" />
                                <b class="tooltip tooltip-bottom-right">Portfolio Code</b>
                            </label>
                        </section>
                        <section class="col col-lg-2">
                            <label class="label">Short Name</label>
                            <label class="input">
                                <input type="text" name="PortfolioSName" id="PortfolioSName" />
                            </label>
                        </section>
                        <section class="col col-lg-2">
                            <label class="label">Full Name</label>
                            <label class="input">
                                <input type="text" name="PortfolioFName" id="PortfolioFName" />
                            </label>
                        </section>
                    </div>
                    <div class="row">
                        <section class="col col-lg-2">
                            <label class="label">Report Currency</label>
                            <label class="select">
                                @Html.DropDownListFor(model => model.Currency, Model.Currencies, new { @class = "input-sm" })
                                <i></i>
                            </label>
                        </section>
                        <section class="col col-lg-2">
                            <label class="label">NPWP</label>
                            <label class="input">
                                <input type="text" name="NPWP" id="NPWP" />
                            </label>
                        </section>
                        <section class="col col-lg-2">
                            <label class="label">Active</label>
                            <div class="inline-group">
                                <label class="radio">
                                    <input type="radio" name="RadioActive" class="RadioActive" value="T" />
                                    <i></i>
                                    Yes
                                </label>
                                <label class="radio">
                                    <input type="radio" name="RadioActive" class="RadioActive" value="F" />
                                    <i></i>
                                    No
                                </label>
                            </div>
                        </section>
                    </div>
                </fieldset>

and the question is i can't get the value from ' portfolio.IsActive ' in Controller. so when i run this in browser, the radio button for IsActive not checked. i get the value IsActive is Null. not T or F.

please help me, do you know what the mistake from my code ??

Upvotes: 0

Views: 521

Answers (1)

Marco
Marco

Reputation: 23937

IsActive is null because your SQL query returns IsActive as Active:

SELECT DISTINCT B.PFolioGroupCode AS PortfolioGroupCode
              , A.PFolioSName AS ShortName 
              , A.PFolioFName AS FullName
              , A.IsActive AS Active /* <-- see here*/
              -- ...
FROM TPFolio As A ...

So either change your ViewModel from IsActive to Active or change the alias in you SQL query.

Plus: Use parameters! Think of little bobby tables.

Upvotes: 2

Related Questions