0

This is my Controller:

/// <summary>
/// Activity
/// </summary>
/// <returns></returns>
public ActionResult CreateActivity()
{
    AriaCRMEntities aria = new AriaCRMEntities();
    var unit = from u in aria.ActivityGroupIDs select u;
    List<SelectListItem> lst = new List<SelectListItem>();
    foreach (var u in unit)
    {
        lst.Add(new SelectListItem { Text = u.ActivityGroupName.ToString(), Value = u.ActivityGroupID_FK.ToString() });
    }
    ViewData["activity"] = lst;
    return View();
}

[HttpPost]
public ActionResult CreateActivity(FormCollection model)
{

        if (ModelState.IsValid)
        {
            Activity activ = new Activity();
                if (!string.IsNullOrEmpty(model["ActivityGroupID_FK"]))
                {
                    AriaCRMEntities aria = new AriaCRMEntities();
                    activ.ActivityGroupID_FK = Int32.Parse(model["ActivityGroupID_FK"]);
                    activ.ActivityType = model["ActivityType"];
                    activ.ActivityDes = model["ActivityDes"];
                    aria.Activities.AddObject(activ);
                    aria.SaveChanges();
                    return RedirectToAction("Create");
                }
        }
        return View(model);
}

This is my View :

<% using (Html.BeginForm()) {%>
<%: Html.ValidationSummary(true,) %>
<fieldset>
    <legend>Fields</legend>
<br />
<%:Html.DropDownListFor(model=>model.ActivityGroupID_FK , (IEnumerable<SelectListItem>)ViewData["activity"], "انتخاب نوع فعالیت")%><br /> 
<%Html.ValidationMessageFor (model=>model.ActivityGroupID_FK,"dddddddddd"); %>
    <div class="editor-label">
        <%: Html.LabelFor(model => model.ActivityType) %>
    </div>
    <div class="editor-field">
        <%: Html.TextBoxFor(model => model.ActivityType) %>
        <%: Html.ValidationMessageFor(model => model.ActivityType,"dfsaaa") %>
    </div>
    <div class="editor-label">
        <%: Html.LabelFor(model => model.ActivityDes) %>
    </div>
    <div class="editor-field">
        <%: Html.TextBoxFor(model => model.ActivityDes) %>
        <%: Html.ValidationMessageFor(model => model.ActivityDes) %>
    </div>
    <p>
        <input type="submit" value="Create" id="btn"/>
    </p>
</fieldset>
<% } %>

But now I need to validate <%:Html.DropDownListFor%>. How do I create custom validation?

2
  • Not really sure what your asking for can you phrase it as a question? Commented Jul 1, 2011 at 13:03
  • You can put custom validation in your model. Look at this blog post. Here is a tutorial. Commented Jul 1, 2011 at 13:15

1 Answer 1

2

If you want to display a validation error message next to your drop-down list, you can do this from your controller like so:

ModelState.AddModelError("ActivityGroupID_FK", "The selected value is invalid.");

Update

I just noticed the validation message for your DropDownList looks like this:

<%Html.ValidationMessageFor (model=>model.ActivityGroupID_FK,"dddddddddd"); %>

You might want to change that like so:

<%: Html.ValidationMessageFor(model=>model.ActivityGroupID_FK,"dddddddddd") %>
Sign up to request clarification or add additional context in comments.

2 Comments

yes but show this Error The model item passed into the dictionary is of type 'System.Web.Mvc.FormCollection', but this dictionary requires a model item of type 'Cascading2.Models.Activity'.
I don't think this error has much to do with this. AddModelError's signature takes just two string parammeters; no System.Web.Mvc.FormCollection or Cascading2.Models.Activity involved here. From your error description, it would seem that the model your controller is passing doesn't match the @model directive in your view.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.