表达式term =无效

时间:2017-10-17 01:46:17

标签: c# asp.net-mvc partial

伙计我似乎无法弄清楚这个。我是MVC和Razor的新手,所以要温柔:D

我得到了这个局部观点:

@model Phonebook.PresentationLayer.Web.Models.EmailModel
@using Phonebook.BusinessLogicLayer.Managers;

@using (Html.BeginForm("AddEmail", "EmailDetails", FormMethod.Post))
{
    @Model.ParseIds= Model.Id + "/" + Model.Contact.Id;
    @Html.HiddenFor(x => Model.ParseIds)
    <div class="info-table add-email">
        <div>
            @Html.EditorFor(x => x.EmailAddress, new { htmlAttributes = new { @class = "no-borders" } })
            @Html.ValidationMessageFor(x => x.EmailAddress)
        </div>
        <div>
            @{
                EmailTypes emailTypesManager = new EmailTypes();
                IEnumerable<EmailTypeModel> emailTypes = emailTypesManager.GetAll().Select(x => (EmailTypeModel)x);
            }
            @Html.DropDownListFor(x => x.EmailType.Id, new     SelectList(emailTypes, "Id", "Name", Model.EmailType.Id), new { @class = "no-borders-drop" })
            @Html.ValidationMessageFor(x => x.EmailType.Name)
        </div>

        <div>
            <input type="submit" value="Save" class="btn btn-success btn-xs">
        </div>

    </div>
    <button type="button" class="btn btn-block btn-default add-email-button">Add new email</button>
}

我打电话给:

@Html.Partial("Partial/_EmailAdd", new EmailModel(){ Contact = Model.Contact})

但它一直给我这个错误,这对我来说没有任何意义: enter image description here

任何人都知道问题可能在哪里?

此外,由于我是Razor的新手,我想知道我何时需要在View代码中使用分号(“;”)?

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为这项任务造成的错误:

@Model.ParseIds= Model.Id + "/" + Model.Contact.Id;

尝试将Model赋值包装在Razor代码块中,或者更好地将其分配到控制器操作方法中:

@* View *@

@{
    Model.ParseIds = Model.Id + "/" + Model.Contact.Id;
}

// Controller

var model = new EmailModel();
// assign Id & Contact.Id here
model.ParseIds = model.Id + "/" + model.Contact.Id;

return PartialView("_EmailAdd", model);

@Model.ParseIds会将ParseIds的值输出为HTML格式的文本,因此在解析过程中跟=后的分配无效。

类似问题:

Getting errors with session variable in partialview MVC

答案 1 :(得分:0)

好的,所以我把@ {}中的错误包裹起来,如下所示:

@{
 Model.ParseIds= Model.Id + "/" + Model.Contact.Id;
}

错误更改为:

  

“@”字符后出现意外的“{”。一旦进入代码块的主体(@if {},@ {}等),您就不需要使用“@ {”切换到代码。

只需删除@和{},清除行(因为该行已经在代码块中)解决了我的问题。

谢谢大家的帮助。